直方图中值的频率

问题描述 投票:0回答:1

这是我的第一篇文章,所以请多多包涵

这里是代码

plt.figure()
ax1 = plt.subplot()
sample = np.random.normal(loc=0.0, scale=1.0, size=100)
ax1.hist(sample,bins=100)
ax1.set_title('n={}'.format(sample_size))  
print(len(np.unique(sample))) ##outputs 100 as expected

[我的疑问是,如果我给出bins=100并且样本数量也为100,那么为什么它不为每个样本绘制条形图,为什么输出图包含大于1的频率?

python matplotlib sampling
1个回答
0
投票
使用默认参数,所有垃圾箱的宽度相同。 100槽表示每个槽的宽度为总宽度的1/100。总宽度从样本列表的最小到最大。

由于边界的选择,至少一个点将在第一个容器中结束,一个在最后一个容器中结束,但是大多数将在中央容器中结束,并且许多最外面的容器保持为空。

这里是一个图来说明正在发生的事情。由于100箱创建了一个非常拥挤的图,因此该示例仅使用20个样本和20箱。只有很少的样本,它们会比更多的样本分散更多。

import matplotlib.pyplot as plt import numpy as np N = 20 plt.figure() ax1 = plt.subplot() sample = np.random.normal(loc=0.0, scale=1.0, size=N) bin_values, bin_bounds, _ = ax1.hist(sample, bins=N, label='Histogram') ax1.set_title(f'{len(np.unique(sample))} samples') ax1.plot(np.repeat(bin_bounds, 3), np.tile([0, -1, np.nan], len(bin_bounds)), label='Bin boundaries' ) ax1.scatter(sample, np.full_like(sample, -0.5), facecolor='none', edgecolor='crimson', label='Sample values') ax1.axhline(0, color='black') plt.legend() plt.show()

explanatory plot
© www.soinside.com 2019 - 2024. All rights reserved.