matplotlib中的历史记录:区域不居中,轴上的比例不正确

时间:2013-07-03 14:58:30

标签: python numpy matplotlib

看一下这个例子:

 import matplotlib.pyplot as plt
 l = [3,3,3,2,1,4,4,5,5,5,5,5,5,5,5,5]
 plt.hist(l,normed=True)
 plt.show()

输出以图片形式发布。我有两个问题:

a)为什么只有4和5个分箱以其值为中心?其他人不应该这样吗?有没有让它们居中的技巧?

b)为什么垃圾箱没有按比例归一化?我希望所有箱子的y值总和为一。

请注意,我的真实示例在列表中包含更多值,但它们都是离散的。

enter image description here

1 个答案:

答案 0 :(得分:12)

您应该调整plt.hist函数的关键字参数。其中有很多,documentation可以帮助您回答其中的许多问题。

一个。 )您可以传递关键字bins=range(1,7)align=left。将bins关键字设置为序列会给出每个bin的边框。例如,[1,2], [2,3], [3,4], ..., [5, 6]

湾)检查您的箱宽(rwidth!=1)。来自matplotlib.pyplot.hist文档:

  

如果为True,则返回元组的第一个元素将是计数   归一化以形成概率密度,即n /(len(x)* dbin)。在一个   概率密度,直方图的积分应为1;您   可以通过概率的梯形积分来验证   密度函数:

这意味着您的垃圾箱下方的区域总计为1,但由于垃圾箱宽度小于1,因此高度会以高度不等于1的方式进行标准化。如果您调整{ {1}},你得到一个好看的情节:

rwidth=1