我试图绘制一组直方图,包括原始计数数据(非标准化为密度/ pdf)和拟合线。但是,我似乎无法弄清楚如何通过pdf函数对ISN&T进行标准化的拟合线。有没有办法绘制非标准化线或反转密度计算的函数?现在,我已经得到了下面的代码,它适用于规范化的直方图和拟合线。
fig, ax = plt.subplots()
x=[13.140,17.520,15.768,10.512,10.512,9.636,10.512, 9.636,11.388,7.884,7.008,7.008,9.636,11.388,7.884,7.88,16.644,42.924,17.520]
n, bins, patches = plt.hist(x, bins=10, normed=False, color='cornflowerblue', alpha=0.75)
(mu, sigma) = norm.fit(x)
y = mlab.normpdf(bins, mu, sigma)
l = plt.plot(bins, y, '-o', linewidth=2)
ax.set_xlabel('Millirems')
这是我到目前为止的图表,包括原始计数数据和标准化拟合线
答案 0 :(得分:2)
您可以通过将pdf乘以我认为直方图的总面积来实现这一目标吗?
import numpy as np
l = plt.plot(bins, y * np.sum(np.diff(bins) * n))
答案 1 :(得分:0)
也许你想要将直方图缩放相对于一个标准的直方图进行缩放。该因子将是直方图sum(n * np.diff(bins))
的区域。
fig, ax = plt.subplots()
x = [13.140,17.520,15.768,10.512,10.512,9.636,10.512, 9.636,11.388,7.884,7.008,7.008,9.636,11.388,7.884,7.88,16.644,42.924,17.520]
n, bins, patches = plt.hist(x, bins=10, normed=False, color='cornflowerblue', alpha=0.75)
(mu, sigma) = norm.fit(x)
y = mlab.normpdf(bins, mu, sigma) * sum(n * np.diff(bins))
plt.plot(bins, y, '-o', linewidth=2)
ax.set_xlabel('Millirems')