4

我正在尝试显示直方图。下面的数组是直方图每个单独 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()

这将返回与此类似的图像演示直方图图像

不过,这是关闭的,因为 bin 0 和 19 到 27 在binVals. 上图中的零值不在我期望的位置。

我期待类似的东西

预期图像

如何修改我的代码以获得这种类型的结果?

作为一个额外的问题,在预期图表的底部有很好地标记的垃圾箱。这可以用 matlibplot 完成吗?

4

1 回答 1

2

我认为你在策划错误的事情。Matplotlib 将计算直方图本身。它现在绘制出您有 14 个值介于 0 和 250,000 之间的 bin,3 个值介于 250,000 和 500,000 之间的图,等等。如果您自己计算直方图,请使用 bar() 图,或者让 Matplotlib 为您计算直方图。

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

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

于 2013-03-14T17:14:32.140 回答