【发布时间】:2017-04-02 13:42:48
【问题描述】:
所以我有两个数据列表,我可以将它们绘制在散点图中,如下所示:
from matplotlib import pyplot as plt
x = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
y = [22.4155688819,22.3936180362,22.3177538001,22.1924849792,21.7721194577,21.1590235248,20.6670446864,20.4996957642,20.4260953411,20.3595072628,20.3926201626,20.6023149681,21.1694961343,22.1077417713,23.8270366414,26.5355924353,31.3179807276,42.7871637946,61.9639549412,84.7710953311]
plt.scatter(degrees,RMS_one_image)
然而,我的问题是我试图将高斯分布拟合到此,但由于 a.它只是半个高斯而不是一个完整的高斯,并且 b。我以前用过的只用过一堆数字。所以像:
# best fit of data
num_bins = 20
(mu, sigma) = norm.fit(sixteen)
y = mlab.normpdf(num_bins, mu, sigma)
n, bins, patches = plt.hist(deg_array, num_bins, normed=1, facecolor='blue', alpha=0.5)
# add a 'best fit' line
y = mlab.normpdf(bins, mu, sigma)
plt.plot(bins, y, 'r--')
这种方法在这里是否有效,还是我完全以错误的方式处理这个问题?谢谢...
【问题讨论】:
-
由于我们不知道
norm.fit是什么,我们无能为力。这是,创建一个minimal complete verifiable example的hoqw。 -
棘手但在(射电)天文学中并不少见...您可以尝试反映数据并进行拟合。但是,您永远不会确切地知道峰值在哪里(除非它只是在天顶 = 90 度处渐近?),因此您的参数分布中可能会有很大的脂肪退化 - 小心。另见stackoverflow.com/questions/41924857/fitting-partial-gaussian
标签: python matplotlib normalization curve-fitting gaussian