【发布时间】:2022-01-26 11:54:01
【问题描述】:
我很新学习如何使用 python,我遇到了这个问题。 我需要从 csv 文件中绘制一些数据并对其拟合高斯曲线。但由于某种原因,拟合只是一条直线。
这是我的代码
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import scipy.optimize as opt
from scipy.optimize import curve_fit
data = pd.read_csv('DRXRed.csv',delimiter=",", names=['2T', 'I'])
plt.xlabel('2\u03B8[Grados]')
plt.ylabel('Intensidad[u.a]')
plt.title('Pico Máximo Difractograma Sr\u2082bCoO\u2086')
plt.grid(visible=True)
def Gauss(x, A, B):
y = A*np.exp(-1*B*x**2)+2000
return y
parameters, covariance = curve_fit(Gauss, data['2T'],data['I'])
fit_A = parameters[0]
fit_B = parameters[1]
fit_y = Gauss(data['2T'], fit_A, fit_B)
print(fit_A)
print(fit_B)
plt.plot(data['2T'], data['I'],color="r", label='data')
plt.plot(data['2T'], fit_y, '-', label='fit')
plt.savefig('Pico.png', dpi=1080)
这是我的功能
它向我显示了这个警告,但我不知道它是什么意思
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/scipy/optimize/minpack.py:833: OptimizeWarning: Covariance of the parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated',
1.0
1.0
如果有任何帮助,我将不胜感激 :)
【问题讨论】:
-
也许this post 可以解决您的问题
-
我认为您的主要问题是您修复了 1) 高斯偏差。 2)中心。您将中心固定为 0。尝试在任何地方使用
data['2T'] -32。这是一个解决方法,看看这是否是问题所在,如果你看到一些曲线接近高斯拟合,那么你将不得不修改你的高斯函数以至少为中心获取一个参数。A*np.exp(-1*B*(x-C)**2)+2000