首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何得到高斯拟合直方图?

如何得到高斯拟合直方图?
EN

Stack Overflow用户
提问于 2021-11-30 05:14:18
回答 1查看 925关注 0票数 0

我有一个表格的pandas.DataFrame

代码语言:javascript
复制
index     ABC       

1         -40       
2         -30       
3         -30       
4         -20       
5         -20       
6         -10       
7         -10       
8         -10      
9          0      
10         0       
11         0       
12         0       
13         10       
14         10       
15         10      
16         10      
17         20     
18         20      
19         20       
20         30       
21         40    

我想做ABC的数据分析。

'ABC'.

  • Gaussian
  1. 绘制了一幅直方图,将histogram.
  2. Measure的全宽度拟合为半高宽。我想按上述顺序进行。我该怎么办?
EN

回答 1

Stack Overflow用户

发布于 2021-11-30 05:53:53

试试这个:

1.绘制直方图

代码语言:javascript
复制
_, bins, _ = plt.hist(data, 20, density=1, alpha=0.5)

2.高斯拟合

代码语言:javascript
复制
_, bins, _ = plt.hist(data, 20, density=1, alpha=0.5)
mu, sigma = scipy.stats.norm.fit(data)
best_fit_line = scipy.stats.norm.pdf(bins, mu, sigma)
plt.plot(bins, best_fit_line)

3.半妇女问题

代码语言:javascript
复制
x = data.index.values
y = np.array(data['ABC'])

def lin_interp(x, y, i, half):
    return x[i] + (x[i+1] - x[i]) * ((half - y[i]) / (y[i+1] - y[i]))

def half_max_x(x, y):
    half = max(y)/2.0
    signs = np.sign(np.add(y, -half))
    zero_crossings = (signs[0:-2] != signs[1:-1])
    zero_crossings_i = np.where(zero_crossings)[0]
    return [lin_interp(x, y, zero_crossings_i[0], half),
            lin_interp(x, y, zero_crossings_i[1], half)]
hmx = half_max_x(x,y)
fwhm = hmx[1] - hmx[0]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70164620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档