图matplotlib显示直方图箱中的总计数

时间:2013-03-14 15:27:05

标签: python matplotlib

我试图显示直方图。下面的数组是直方图中每个单独bin的计数。

binVals = [0,5531608,6475325,1311915,223000,609638,291151,449434,1398731,2516755,3035532,2976924,2695079,1822865,1347155,304911,3562,157,5,0,0,0,0,0,0,0,0,0]

我该怎么做呢?我尝试使用此代码

import matplotlib.pyplot as plt
binVals = [0,5531608,6475325,1311915,223000,609638,291151,449434,1398731,2516755,3035532,2976924,2695079,1822865,1347155,304911,3562,157,5,0,0,0,0,0,0,0,0,0]
plt.hist(binVals, bins=len(binVals), color='r', alpha=0.5, label='Values')
plt.title("Demo Histogram")
plt.xlabel("Value")
plt.ylabel("Frequency")
plt.legend()
plt.show()

这将返回与此Demo Histogram image

类似的图像

这是关闭的,因为在binVals中,区间0和19到27的计数为零。上图中的零值不在我期望的位置。

我期待与此类似的东西

Expected Image

如何修改我的代码以获得此类结果?

作为一个额外的问题,在预期图表的底部有很好的标签Bins。可以用matlibplot完成吗?

1 个答案:

答案 0 :(得分:1)

我认为你正在策划错误的事情。 Matplotlib将计算直方图本身。它现在绘制你有14个箱子,值在0到250,000之间,3个值在250,000到500,000之间等。如果你自己计算直方图,使用条形图(),或者让Matplotlib为你计算直方图。 / p>

对于刻度标签,请使用set_xticklabels(["Under 600", "600-700",...], rotation = "vertical")

(我将评论作为答案,因此可以将其标记为已回答)