我正在尝试使用matplotlib.pyplot.hist在python中创建直方图。 我有一个数据变化的数组,但是当我的代码放入python时,直方图返回时所有箱中的值彼此相等,或等于零,这是不正确的。
直方图应该看上面的折线图,其中的箱子大小与上图大致相同,形状相同。
直方图上方的折线图用于说明我的数据是什么样的,并显示我的数据确实有所不同。
我的数据数组叫做spectrumnoise,它只是我针对数组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)
我还无数次更改了二进制数,看看是否有助于规范化直方图功能,但没有任何效果。
此处可以看到代码输出的图像
答案 0 :(得分:0)
问题是spectrumnoise
是list
数组,而不是numpy.ndarray
。当您将hist
数组列表作为其第一个参数时,它会将每个元素视为要绘制的单独的数据集。所有的箱子都有相同的高度,因为列表中的每个“数据集”只有一个值!
来自hist
docstring:
可以通过 x 作为数据集列表提供多个数据 长度可能不同([ x0 , x1 ,...]),或者 一个二维的ndarray,其中每列是一个数据集。
尝试将spectrumnoise
转换为1D数组:
pp.hist(np.vstack(spectrumnoise),50)
顺便说一下,查看代码时,绝对没有理由首先将数据转换为列表。您应该做的是直接在阵列中的切片上操作,例如:
data[20:40] += y1