Matplotlib的条形图显示不均匀的条形

时间:2019-01-20 16:54:00

标签: python matplotlib bar-chart

如果我们看这段代码和x,y数据,

rects1 = plt.bar([0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,1],[1, 2, 4, 10, 5, 9, 1,4, 9, 9],edgecolor='black')
plt.xlabel('Sample Mean')
plt.ylabel('Probability')

这将显示以下图形
enter image description here

我不明白x值如何超过1甚至取负值。另外,为什么条的宽度不同?

1 个答案:

答案 0 :(得分:1)

问题是您的x值之间的间距为0.1,默认条形宽度为1,因此您会看到重叠的条形。解决方案是定义钢筋宽度。在您的情况下,条宽度小于0.1会很好地工作。例如,您可以使用width=0.05,您将获得以下图形。

为什么要设为负数?:默认情况下,条形图的中心位于0、1、2、3等。因此,问题中的第一个条形图以0为中心绘制,宽度为1。这就是为什么它在-0.5到+0.5范围内的原因。

rects1 = plt.bar([0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,1],
                 [1, 2, 4, 10, 5, 9, 1,4, 9, 9], width=0.05, edgecolor='black')
plt.xlabel('Sample Mean')
plt.ylabel('Probability')

enter image description here

如果您不想在x <0 处设置条形:您可以通过传递参数align='edge将条形向右对齐。

rects1 = plt.bar([0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,1],
                 [1, 2, 4, 10, 5, 9, 1,4, 9, 9], width=0.05, align='edge', 
                 edgecolor='black')

enter image description here