【问题标题】:Why does the normalized histogram give wrong y values (all should add up to 1)? Python matplotlib [duplicate]为什么归一化直方图给出了错误的 y 值(都应该加起来为 1)? Python matplotlib [重复]
【发布时间】:2023-04-01 15:37:01
【问题描述】:

试图制作一个简单的直方图(工作),但在归一化时(密度=1) - 它给出了不正确的 y 值,因为所有的值加起来应该是 1

Dataset = [10,10.2,10.4,10.6,10.8,11.0,11.2]
Freqset = [1,3,7,9,6,5,2]
data =[]

for i in range(len(Dataset)):
    for j in range(Freqset[i]):
        data.append(Dataset[i])
print(data)

bins = len(Dataset)
plt.hist(data,bins,histtype='bar', density = 1,rwidth=0.8,alpha=0.5)

plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title(f'Histogram')

plt.show()

【问题讨论】:

  • 请注意,plt.hist 有一个 weights= 参数,因此您可以直接从频率创建直方图:plt.hist(Dataset, bins, weights=Freqset, density=1)。另请注意,对于离散数据,通常更希望明确设置数据点之间的 bin 边界,例如bins = np.arange(9.9, 11.4, 0.2),防止酒吧的奇怪定位。

标签:
python
matplotlib
histogram