看一下这个例子:
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值总和为一。
请注意,我的真实示例在列表中包含更多值,但它们都是离散的。
答案 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