python 对x,y作图,并且在0-10,10-20,20-100的区域段进行线性拟合,并将拟合曲线作图,并且输出拟合公式和拟合优度 代码
时间: 2024-05-10 08:14:38 浏览: 97
以下是一个示例代码,使用了 matplotlib 和 numpy 库来实现对 x, y 数据的作图和线性拟合:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成数据
x = np.linspace(0, 100, 100)
y = np.random.rand(100) * 100
# 分段线性拟合
x_ranges = [[0, 10], [10, 20], [20, 100]]
fit_results = []
for x_range in x_ranges:
mask = np.where((x >= x_range[0]) & (x < x_range[1]))[0]
x_subset, y_subset = x[mask], y[mask]
params = np.polyfit(x_subset, y_subset, 1)
fit_results.append(params)
# 绘图
plt.scatter(x, y, label='data')
for i, x_range in enumerate(x_ranges):
mask = np.where((x >= x_range[0]) & (x < x_range[1]))[0]
x_subset = x[mask]
y_fit = np.polyval(fit_results[i], x_subset)
plt.plot(x_subset, y_fit, label=f'{x_range[0]}-{x_range[1]} fit')
plt.legend()
# 输出拟合公式和拟合优度
for i, fit_result in enumerate(fit_results):
r = np.corrcoef(y[x_ranges[i][0]:x_ranges[i][1]], np.polyval(fit_result, x[x_ranges[i][0]:x_ranges[i][1]]))[0][1]
print(f'Fit {x_ranges[i][0]}-{x_ranges[i][1]}: y = {fit_result[0]:.2f}x + {fit_result[1]:.2f}, r = {r:.2f}')
```
该代码会生成一个散点图,并在不同的区间段内进行线性拟合,并输出拟合公式和拟合优度。您可以根据自己的数据和要求进行修改。
阅读全文