Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python matplotlib中的Hist:箱子未居中且轴上的比例不正确_Python_Numpy_Matplotlib - Fatal编程技术网

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)