Matplotlib直方图:绿色和蓝色垃圾箱

时间:2014-07-02 05:00:37

标签: python matplotlib plot bins

我正在使用pyplot来制作直方图。这是我正在做的事情:

import numpy as np
import pylab as pl

A = {my dataset as a dictionary: different numbers and their frequencies}
numbers = A.keys()
frequencies = A.values()
plot = np.transpose(np.array([[numbers,frequencies]])
n = <my bins-value here>
pl.hist(plot,bins=n,log=True)
pl.show()

我注意到,无论我指定的垃圾箱数量多少,第二个垃圾箱都是绿色的,如下所示。它为什么是绿色的?这是什么意思?我该如何防止这种情况发生?

enter image description here

1 个答案:

答案 0 :(得分:3)

你不能真正使用hist那种方式。给定原始数据,hist 计算值频率。您已经计算了频率,并且尝试将它们传递给hist,但这不是输入hist的需要。当您传入二维数组时,hist会显示多个直方图,每列一个。这是documented

  

可以通过x提供多个数据作为可能不同长度([x0,x1,...])的数据集列表,或者作为2-D nararray,其中每列是数据集。

所以你得到一个条形图(蓝色的)用于你的标签,另一个(绿色的)用于它们的计数。据推测,所有绿色都集中在一起,因为它们的范围要小得多。

如果您从原始数据生成频率,则可以将原始数据传递到hist以获取直方图。如果您只有直方图数据,则应使用matplotlib的bar函数自行使用直方图数据制作条形图。但是,你必须自己装箱。最重要的是你可以让hist做任何事情,或者什么也不做:你可以让它计算频率和箱子并做图,或者你可以计算频率和箱子并做图,但是你不能自己计算频率,只需要hist进行分箱和绘图。