python - 直方图绘制 "AttributeError: max must be larger than min in range parameter."

标签 python histogram

我有一个用于制作直方图的数据集(作为 .txt 文件),但期刊要求我对数据进行归一化并绘制归一化数据的直方图。但是,我收到“AttributeError:范围参数中的最大值必须大于最小值”。当我试图绘制规范化数据时出错。基本上,H1 是我的数据列表(有些可能包括我试图删除的 nan 值),我正在尝试标准化剩余数据

import numpy as np
from numpy import array
import matplotlib.pyplot as plt

H1 = np.loadtxt('histogramrate25p10area30.txt') #Import data from txt file

newH1 = [x for x in H1 if x != 'nan'] #Remove nan values
norm1 = [float(i)/max(newH1) for i in newH1] #Normalize remaining values

nbins1 = 400

plt.figure()

plt.subplot(111)
plt.hist(norm1, nbins1, color='purple', alpha=0.5)
plt.ylabel('Frequency', fontsize=20)

plt.show()

浏览此网站时,错误是由 nan 值的存在引起的,但我认为在上面的 newH1 列表中,我已经删除了所有 nan 值,所以我不确定是什么导致了这个错误。

最佳答案

应该做到以下几点:

import numpy as np
from numpy import array
import matplotlib.pyplot as plt


H1 = np.loadtxt('histogramrate25p10area30.txt')

newH1 = H1[~np.isnan(H1)]
norm1 = np.apply_along_axis(func1d=lambda x: x/np.max(newH1), arr=newH1, axis=0)
nbins1 = 400
plt.hist(norm1, nbins1, color='purple', alpha=0.5)

plt.figure()

plt.subplot(111)
plt.hist(norm1, nbins1, color='purple', alpha=0.5)
plt.ylabel('Frequency', fontsize=20)

plt.show()

说明:

上面的脚本在 np.loadtxt 函数的帮助下加载数据,然后删除包含空值的行。后者是通过使用 bool 数组 ~np.isnan(H1) 索引导入的数组来完成的。此处,np.isnan 查找值为 nullnan 的行,而 ~ 符号否定该行;将 True 值更改为 False,反之亦然。一旦完成,它将继续对新数组的每个值应用一个函数。这里的函数是lambda x: x/np.max(newH1);这基本上是将数组的每个值除以新数组中存在的最大值。

下一步是绘制直方图。我们将所需的 bin 数设置为 400,并使用 plt.hist 绘制直方图。创建一个 figure 然后向我们的 figure 添加一个 subplot 还有一个额外的好处。随后,我们使用 subplot 绘制直方图。

我希望这证明是有用的。

关于python - 直方图绘制 "AttributeError: max must be larger than min in range parameter.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42014687/

相关文章:

使用字典理解的 Python 类变量赋值

python - R 和 Numpy 的 QR 分解之间的差异

python - 这个变量是如何进入到函数中的呢? (Python)

python - 列表继承 : "extend" vs "+" vs "+="

python - 如何在 matplotlib 中按不同组绘制直方图?

elasticsearch - Kibana 垂直条形图在 X 轴的哪个位置我有值总和的桶?

python - 如何并行化复杂的 for 循环

python - 使用 matplotlib.pylab 在 for 循环中更新直方图

python - 骰子实验结果的分布

matlab - 呈现不同颜色的直方图 - matlab