使用matplotlib绘制总计在直方图区间的图表
我正在尝试显示一个直方图。下面的数组是直方图中每个小格的计数。
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()
结果出来的图像像这样
不过这有点问题,因为在binVals
中,0号和19到27号的小格的计数都是零。上面图像中的零值并不在我预期的位置。
我希望得到的效果类似于这个
我该如何修改我的代码才能得到这样的结果呢?
另外,预期图表底部有漂亮的标签小格。这可以用matlibplot实现吗?
1 个回答
2
我觉得你画的东西不太对。Matplotlib会自己计算直方图。现在它显示你有14个区间,值在0到250,000之间,3个区间的值在250,000到500,000之间,等等。如果你自己计算直方图,可以用bar()函数来画,或者让Matplotlib帮你计算直方图。
对于刻度标签,可以使用 set_xticklabels(["600以下", "600-700",...], rotation = "vertical")
来设置。
(我把评论变成了答案,这样就可以标记为已回答了)