如果我们看这段代码和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')
我不明白x值如何超过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')
如果您不想在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')