1

我正在尝试使用 matplotlib.pyplot.hist 在 python 中创建直方图。我有一个变化的数据数组,但是当将我的代码放入 python 时,返回的直方图的所有 bin 中的值彼此相等,或者等于零,这是不正确的。

直方图应查看其上方的折线图,其中 bin 的高度和形状与上图大致相同。

直方图上方的折线图用于说明我的数据是什么样的,并表明我的数据确实有所不同。

我的数据数组称为频谱噪声,只是我针对数组 x 创建的一个函数

x=np.arange[0.1,20.1,0.1]

我用来创建直方图和上面的折线图的代码是

import matplotlib.pylot as mpl 
mpl.plot(x,spectrumnoise)
mpl.hist(spectrumnoise,bins=50,histtype='step')
mpl.show()

我也尝试过使用

mpl.hist((x,spectrumnoise),bins=50,histtype=step)

我还无数次更改了 bin 的数量,看看这是否有助于规范化直方图函数,但没有任何效果。

代码输出的图像可以在这里看到 在此处输入图像描述

4

1 回答 1

1

问题是这spectrumnoise是一个list数组,而不是一个numpy.ndarray. 当您hist将数组列表作为其第一个参数时,它将每个元素视为要绘制的单独数据集。所有的 bin 都具有相同的高度,因为列表中的每个“数据集”只有一个值!

hist文档字符串:

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

尝试转换spectrumnoise为一维数组:

pp.hist(np.vstack(spectrumnoise),50)

顺便说一句,查看您的代码绝对没有理由首先将您的数据转换为列表。您应该做的是直接对数组中的切片进行操作,例如:

data[20:40] += y1
于 2013-08-21T12:04:17.480 回答