考虑到这个问题的日期是2010年,我知道这个答案已经太迟了,但我自己也遇到了类似的问题。如回答中所述,normed=True表示直方图下的总面积等于1,但高度之和不等于1。但是,为了便于对直方图进行物理解释,我想制作一个高度和等于1的直方图。
如果社区认为这是可以接受的,我想提出一个解决方案,综合以上两个职位的想法。import matplotlib.pyplot as plt
# Let X be the array whose histogram needs to be plotted.
nx, xbins, ptchs = plt.hist(X, bins=20)
plt.clf() # Get rid of this histogram since not the one we want.
nx_frac = nx/float(len(nx)) # Each bin divided by total number of objects.
width = xbins[1] - xbins[0] # Width of each bin.
x = np.ravel(zip(xbins[:-1], xbins[:-1]+width))
y = np.ravel(zip(nx_frac,nx_frac))
plt.plot(x,y,linestyle="dashed",label="MyLabel")
#... Further formatting.
这对我来说非常有效,尽管在某些情况下,我注意到直方图的最左边的“条”或最右边的“条”并不是通过触摸Y轴的最低点来关闭的。在这种情况下,在行乞或y的末尾添加一个元素0就得到了必要的结果。
我只是想和你分享我的经历。谢谢您。