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

use*_*145 8 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()
Run Code Online (Sandbox Code Playgroud)

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

a)为什么只有4和5个箱子以其价值为中心?其他人不应该这样吗?是否有诀窍让他们居中?

b)为什么垃圾箱没有按比例标准化?我希望所有箱子的y值总和为1.

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

在此输入图像描述

wfl*_*nny 14

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

一个.你可以传递关键字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的方式进行标准化.如果您调整rwidth=1,则会得到一个好看的情节:

plt.hist(l, bins=range(1,7), align='left', rwidth=1, normed=True)
Run Code Online (Sandbox Code Playgroud)