python - matplotlib.pyplot.hist 返回一个直方图,当我有不同的数据时,所有 bin 都具有相同的值

标签 python matplotlib histogram

我正在尝试使用 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 的数量,看看这是否有助于标准化直方图函数,但没有任何效果。

可以在此处查看代码输出的图像 enter image description here

最佳答案

问题在于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/

相关文章:

java - 如何从普通图像生成 HSL 或 HSI 直方图?

python - 如何在脚本中加载 tflite 模型?

python - matplotlib 子图之间的箭头

python - 需要帮助解决 Raspberry Pi 上 matplotlib 的性能问题

python - 使用 Matplotlib 在一张条形图中绘制两个字典

python - 为图像对比度度量实现直方图扩展

Python 内省(introspection)与对象继承

python - 如何将复杂矩阵保存在文件中?

python - scipy.misc.imshow 运行时错误 ('Could not execute image view' )

python - Pandas :在x轴上绘制时间直方图