Saya mencoba membuat plot batang dengan tempat sumbu x lebar variabel di Seaborn. Mirip dengan bagan ini: Semua lebar x saya akan bertambah hingga 100%, namun sepertinya saya tidak dapat menemukan contoh cara mencapai tujuan ini melalui Seaborn. Ada ide?
Barplot lebar variabel dengan seaborn [duplikat]
Jawaban (2)
Mungkin ada beberapa kemungkinan jawaban di sini. Dalam barplot seaborn, Anda dapat menggunakan kombinasi beberapa parameter untuk tujuan tersebut: "width" (nilai lebar batang), "left" (nilai lokasi pada sumbu x, yang merupakan argumen wajib) dan "align" ".
Contoh yang sangat sederhana:
import seaborn as sns
data = [7, 3, 15]
widths = [1, 5, 3]
left = [0, 1, 6]
sns.plt.bar(left, data, width = widths, color=('orange','green','blue'),
alpha = 0.6, align='edge', edgecolor = 'k', linewidth = 2)
Perhatikan bahwa "kiri" (lokasi batang) harus sesuai dengan lebarnya agar batang hanya bersentuhan dan tidak tumpang tindih.
person
BossaNova
schedule
17.10.2017
Dengan menggunakan
sns.plt.bar
, Anda memanggil fungsi matplotlibs plt.bar
. Ini tidak ada hubungannya dengan seaborn.
- person ImportanceOfBeingErnest; 18.10.2017
Jika Anda ingin menggunakan Seaborn untuk barplot, Anda perlu mengubah lebar persegi panjang batang (tambalan) setelahnya (ini dilakukan melalui antarmuka berorientasi objek matplotlib sesuai jawaban ini):
import seaborn as sns
iris = sns.load_dataset('iris')
ax = sns.barplot('species', 'sepal_width', data=iris)
widthbars = [0.3, 0.6, 1.2]
for bar, newwidth in zip(ax.patches, widthbars):
x = bar.get_x()
width = bar.get_width()
centre = x + width/2.
bar.set_x(centre - newwidth/2.)
bar.set_width(newwidth)
Anda juga dapat membuat barplot serupa di matplotlib secara langsung:
import matplotlib.pyplot as plt
widths = [0.3, 0.6, 1.2]
for x_pos, (species_name, species_means) in enumerate(iris.groupby('species').mean().groupby('species')):
plt.bar(x_pos, species_means['sepal_width'], widths[x_pos])
person
joelostblom
schedule
18.10.2017
pyplot.bar
sebagai gantinya. - person ImportanceOfBeingErnest   schedule 18.10.2017