Python matplotlib中的Hist:箱子未居中且轴上的比例不正确
看看这个例子:Python matplotlib中的Hist:箱子未居中且轴上的比例不正确,python,numpy,matplotlib,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值总和为一 请注意,我的真实示例在列表中包含更多的值,但它们都是离散的 您应该调
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值总和为一
请注意,我的真实示例在列表中包含更多的值,但它们都是离散的
您应该调整
plt.hist
函数的关键字参数。这些问题有很多,可以帮助您回答其中的许多问题
a、 )您可以传递关键字bins=range(1,7)
和align=left
。将bin
关键字设置为一个序列将给出每个bin的边界。例如,[1,2],[2,3],[3,4],…,[5,6]
b、 )检查您的箱子宽度(rwidth!=1
)。从matplotlib.pyplot.hist
文档中:
如果为True,返回元组的第一个元素将是counts
归一化以形成概率密度,即n/(len(x)*dbin)。在一个
概率密度,直方图的积分应为1;你
可以验证用梯形积分的概率
密度函数:
这意味着箱子下面的面积总和为1,但由于箱子宽度小于1,因此高度将以这样一种方式进行规范化,即高度总和不等于1。如果调整rwidth=1
,将得到一个好看的绘图:
plt.hist(l, bins=range(1,7), align='left', rwidth=1, normed=True)