1

我正在使用 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()

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

在此处输入图像描述

4

1 回答 1

3

你不能真正使用hist这种方式。 在给定原始数据的情况下hist 计算值频率。您已经计算了频率,并试图将它们传递给hist,但这不是输入hist需要。当您传入一个二维数组时,正如您所做的那样,hist显示多个直方图,每列一个。这是记录在案的:

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

因此,您将获得一个条形图(蓝色的)用于您的标签,另一个(绿色的)用于它们的计数。大概所有绿色的都集中在一起,因为它们的范围要小得多。

如果您从原始数据生成频率,则可以将该原始数据传递给以hist获取直方图。如果您只有直方图数据,您应该使用 matplotlib 的bar函数使用直方图数据自己制作条形图。但是,您必须自己装箱。底线是你可以让hist一切都做,或者什么都不做:你可以让它计算频率和 bin 并绘制图,或者你可以计算频率和 bin 并绘制图,但你不能只自己计算频率,然后hist进行分箱和绘图。

于 2014-07-02T05:09:54.947 回答