对比曲线图形比较拟合效果:要求把图形窗口分成四个子图,子图1绘制出原始测量值(描点,后面同理)和一阶多项式拟合后的曲线,子图2绘制出原始测量值和二阶多项式拟合后的曲线;子图3绘制出原始测量值和三阶多项
以下是一个示例代码,用于绘制四个子图,分别展示不同阶数的多项式拟合效果:
```python
import numpy as np
import matplotlib.pyplot as plt
# 原始测量值
x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
y = np.array([2, 4, 6, 8, 10, 12, 14, 16, 18, 20])
# 一阶多项式拟合
poly1 = np.polyfit(x, y, 1)
poly1_fn = np.poly1d(poly1)
# 二阶多项式拟合
poly2 = np.polyfit(x, y, 2)
poly2_fn = np.poly1d(poly2)
# 三阶多项式拟合
poly3 = np.polyfit(x, y, 3)
poly3_fn = np.poly1d(poly3)
# 四阶多项式拟合
poly4 = np.polyfit(x, y, 4)
poly4_fn = np.poly1d(poly4)
# 绘制四个子图
fig, axs = plt.subplots(2, 2, figsize=(10, 8))
# 子图1:一阶多项式拟合曲线
axs[0, 0].scatter(x, y, label='原始测量值')
axs[0, 0].plot(x, poly1_fn(x), color='red', label='一阶多项式拟合曲线')
axs[0, 0].set_xlabel('时间')
axs[0, 0].set_ylabel('强度')
axs[0, 0].set_title('一阶多项式拟合曲线')
axs[0, 0].legend()
# 子图2:二阶多项式拟合曲线
axs[0, 1].scatter(x, y, label='原始测量值')
axs[0, 1].plot(x, poly2_fn(x), color='green', label='二阶多项式拟合曲线')
axs[0, 1].set_xlabel('时间')
axs[0, 1].set_ylabel('强度')
axs[0, 1].set_title('二阶多项式拟合曲线')
axs[0, 1].legend()
# 子图3:三阶多项式拟合曲线
axs[1, 0].scatter(x, y, label='原始测量值')
axs[1, 0].plot(x, poly3_fn(x), color='blue', label='三阶多项式拟合曲线')
axs[1, 0].set_xlabel('时间')
axs[1, 0].set_ylabel('强度')
axs[1, 0].set_title('三阶多项式拟合曲线')
axs[1, 0].legend()
# 子图4:四阶多项式拟合曲线
axs[1, 1].scatter(x, y, label='原始测量值')
axs[1, 1].plot(x, poly4_fn(x), color='orange', label='四阶多项式拟合曲线')
axs[1, 1].set_xlabel('时间')
axs[1, 1].set_ylabel('强度')
axs[1, 1].set_title('四阶多项式拟合曲线')
axs[1, 1].legend()
# 调整子图之间的间距
plt.tight_layout()
# 显示图形
plt.show()
```
你可以根据自己的实际数据进行修改和调整,代码中的注释会帮助你理解每一步的操作。
```python
import numpy as np
import matplotlib.pyplot as plt
# 原始测量值
x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
y = np.array([2, 4, 6, 8, 10, 12, 14, 16, 18, 20])
# 一阶多项式拟合
poly1 = np.polyfit(x, y, 1)
poly1_fn = np.poly1d(poly1)
# 二阶多项式拟合
poly2 = np.polyfit(x, y, 2)
poly2_fn = np.poly1d(poly2)
# 三阶多项式拟合
poly3 = np.polyfit(x, y, 3)
poly3_fn = np.poly1d(poly3)
# 四阶多项式拟合
poly4 = np.polyfit(x, y, 4)
poly4_fn = np.poly1d(poly4)
# 绘制四个子图
fig, axs = plt.subplots(2, 2, figsize=(10, 8))
# 子图1:一阶多项式拟合曲线
axs[0, 0].scatter(x, y, label='原始测量值')
axs[0, 0].plot(x, poly1_fn(x), color='red', label='一阶多项式拟合曲线')
axs[0, 0].set_xlabel('时间')
axs[0, 0].set_ylabel('强度')
axs[0, 0].set_title('一阶多项式拟合曲线')
axs[0, 0].legend()
# 子图2:二阶多项式拟合曲线
axs[0, 1].scatter(x, y, label='原始测量值')
axs[0, 1].plot(x, poly2_fn(x), color='green', label='二阶多项式拟合曲线')
axs[0, 1].set_xlabel('时间')
axs[0, 1].set_ylabel('强度')
axs[0, 1].set_title('二阶多项式拟合曲线')
axs[0, 1].legend()
# 子图3:三阶多项式拟合曲线
axs[1, 0].scatter(x, y, label='原始测量值')
axs[1, 0].plot(x, poly3_fn(x), color='blue', label='三阶多项式拟合曲线')
axs[1, 0].set_xlabel('时间')
axs[1, 0].set_ylabel('强度')
axs[1, 0].set_title('三阶多项式拟合曲线')
axs[1, 0].legend()
# 子图4:四阶多项式拟合曲线
axs[1, 1].scatter(x, y, label='原始测量值')
axs[1, 1].plot(x, poly4_fn(x), color='orange', label='四阶多项式拟合曲线')
axs[1, 1].set_xlabel('时间')
axs[1, 1].set_ylabel('强度')
axs[1, 1].set_title('四阶多项式拟合曲线')
axs[1, 1].legend()
# 调整子图之间的间距
plt.tight_layout()
# 显示图形
plt.show()
```
你可以根据自己的实际数据进行修改和调整,代码中的注释会帮助你理解每一步的操作。