我正在尝试使用 matplotlib.pyplot.hist 在 python 中创建直方图。 我有一个变化的数据数组,但是当将我的代码放入 python 中时,返回的直方图的所有 bin 中的值彼此相等,或者等于零,这是不正确的。
直方图应该看起来像它上面的线图,箱的高度和形状与上面的图大致相同。
直方图上方的折线图用于说明我的数据的样子并表明我的数据确实有所不同。
我的数据数组称为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)
我还无数次改变了 bin 的数量,看看这是否有助于标准化直方图函数,但没有任何效果。
可以在此处查看代码输出的图像
最佳答案
问题在于spectrumnoise
是一个列表
数组,而不是numpy.ndarray
。当您将hist
数组列表作为其第一个参数时,它会将每个元素视为要绘制的单独数据集。所有箱具有相同的高度,因为列表中的每个“数据集”只有一个值!
来自 hist
文档字符串:
Multiple data can be provided via x as a list of datasets of potentially different length ([x0, x1, ...]), or as a 2-D ndarray in which each column is a dataset.
尝试将spectrumnoise
转换为一维数组:
pp.hist(np.vstack(spectrumnoise),50)
顺便说一句,看看您的代码,绝对没有理由首先将数据转换为列表。您应该做的是直接对数组中的切片进行操作,例如:
data[20:40] += y1
关于python - matplotlib.pyplot.hist 返回一个直方图,当我有不同的数据时,所有 bin 都具有相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18355416/