具有非标准化拟合线的直方图,matplotlib

时间:2016-12-07 18:12:58

标签: python matplotlib histogram probability-density

我试图绘制一组直方图,包括原始计数数据(非标准化为密度/ 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.64‌​4,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')

这是我到目前为止的图表,包括原始计数数据和标准化拟合线 this is the graph i have so far, with raw count data and a normalized fit line

2 个答案:

答案 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')

maximum length of HTTP GET request?