我正在使用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()
我注意到,无论我指定的垃圾箱数量多少,第二个垃圾箱都是绿色的,如下所示。它为什么是绿色的?这是什么意思?我该如何防止这种情况发生?
答案 0 :(得分:3)
你不能真正使用hist
那种方式。给定原始数据,hist
计算值频率。您已经计算了频率,并且尝试将它们传递给hist
,但这不是输入hist
的需要。当您传入二维数组时,hist
会显示多个直方图,每列一个。这是documented:
可以通过x提供多个数据作为可能不同长度([x0,x1,...])的数据集列表,或者作为2-D nararray,其中每列是数据集。
所以你得到一个条形图(蓝色的)用于你的标签,另一个(绿色的)用于它们的计数。据推测,所有绿色都集中在一起,因为它们的范围要小得多。
如果您从原始数据生成频率,则可以将原始数据传递到hist
以获取直方图。如果您只有直方图数据,则应使用matplotlib的bar
函数自行使用直方图数据制作条形图。但是,你必须自己装箱。最重要的是你可以让hist
做任何事情,或者什么也不做:你可以让它计算频率和箱子并做图,或者你可以计算频率和箱子并做图,但是你不能自己计算频率,只需要hist
进行分箱和绘图。