答案 0 :(得分:2)
这里可能有几个可能的答案。在seaborn barplot中,您可以为此目的使用几个参数的组合:"宽度" (条的宽度值),"左边" (x轴上的位置值,这是一个强制性参数)和"对齐"。
一个非常简单的例子:
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)
请注意"左" (条形的位置)应该对应于宽度,以便条形只是触摸而不重叠。
答案 1 :(得分:0)
如果你想在条形图中使用Seaborn,你需要在之后更改条形矩形(补丁)的宽度(这是通过matplotlib面向对象的界面按照this answer完成的):
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)
您还可以直接在matplotlib中创建类似的条形图:
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])