python 折线图高斯拟合
时间: 2023-09-12 22:13:22 浏览: 103
要在 Python 中绘制折线图并进行高斯拟合,你可以使用以下步骤:
1. 导入必要的库:
```python
import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
```
2. 准备数据:
```python
x = np.array([1, 2, 3, 4, 5])
y = np.array([1.2, 2.3, 4.5, 7.8, 12.1])
```
这里,我们假设 `x` 和 `y` 为已知的数据。
3. 定义高斯函数:
```python
def gaussian(x, a, b, c):
return a * np.exp(-(x - b)**2 / (2 * c**2))
```
这里,我们定义了一个高斯函数,其中 `a`、`b` 和 `c` 是拟合参数。
4. 进行高斯拟合:
```python
popt, pcov = curve_fit(gaussian, x, y)
```
这里,`curve_fit` 函数返回两个值:`popt` 是一个包含拟合参数的数组,`pcov` 是协方差矩阵。
5. 绘制折线图:
```python
plt.plot(x, y, 'bo', label='data')
plt.plot(x, gaussian(x, *popt), 'r-', label='fit')
plt.legend()
plt.show()
```
这里,我们使用 `plot` 函数绘制原始数据和拟合曲线,并使用 `legend` 函数添加图例。
完整代码如下:
```python
import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
# 准备数据
x = np.array([1, 2, 3, 4, 5])
y = np.array([1.2, 2.3, 4.5, 7.8, 12.1])
# 定义高斯函数
def gaussian(x, a, b, c):
return a * np.exp(-(x - b)**2 / (2 * c**2))
# 进行高斯拟合
popt, pcov = curve_fit(gaussian, x, y)
# 绘制折线图
plt.plot(x, y, 'bo', label='data')
plt.plot(x, gaussian(x, *popt), 'r-', label='fit')
plt.legend()
plt.show()
```
运行代码后,你将得到一张包含原始数据和高斯拟合曲线的折线图。
阅读全文