TL;DR: 如何使用Numpy正确绘制
使用
为什么直方图和概率密度函数没有相应地进行缩放? 在这种情况下,观察表明1.6倍的缩放效果更好。
此外,这个正常运作:
np.histogram(..., density=True)
的结果?使用
density=True
应该能够匹配样本的直方图和底层随机变量的密度函数,但实际上并没有。import numpy as np
import scipy.stats
import matplotlib.pyplot as plt
y = np.random.randn(10000)
h, bins = np.histogram(y, bins=1000, density=True)
plt.bar(bins[:-1], h)
x = np.linspace(-10, 10, 100)
f = scipy.stats.norm.pdf(x)
plt.plot(x, f, color="green")
plt.show()
为什么直方图和概率密度函数没有相应地进行缩放? 在这种情况下,观察表明1.6倍的缩放效果更好。
plt.plot(x, 1.6 * f, color="green")
此外,这个正常运作:
plt.hist(y, bins=100, density=True)
为什么?
h.sum()*0.0075762
的结果为 1.0000002056823407,其中 0.0075762 是通过检查bins
找到的区间间隔。这表明直方图构建正确,因此问题出在绘图上。 - undefinedplt.bar(bins[:-1], h)
绘制的柱状图比直方图的箱子要宽得多 - 箱子大约是0.007宽度,但显示的柱子要宽得多,可能是0.5甚至更大。plt.bar
是否有关于允许的最小宽度的概念?我在第二张图片中看到,柱子要窄得多。 - undefinednp.histogram
来使用plt.bar
? - undefinedplt.bar
忘记最小条形宽度或其他阻止它准确展示柱状图的因素。 - undefined