You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用poly fit拟合2次及以上多项式的绘图异常问题

问题解决:高次多项式拟合曲线无法正常绘制的修复

错误原因分析

  1. plt.plot参数传递错误:你写的plt.plot("", "", x, poly1d_fn(x))参数顺序不符合matplotlib绘图规则,前两个空字符串会被误识别为x、y数据,直接打乱高次拟合的绘图逻辑。
  2. 原始x数据的局限性:直接用原始离散x点计算拟合值,若x未排序或点数过少,绘制出的“曲线”会是连接原始点的折线,而非平滑的拟合曲线。

修复后的完整代码示例

import numpy as np
import matplotlib.pyplot as plt

# 替换成你的原始数据
x = np.array([1, 3, 2, 5, 4])
y = np.array([2, 8, 5, 20, 15])

# 设置多项式次数(可修改为3次、4次等)
degree = 2

# 执行多项式拟合
coef = np.polyfit(x, y, degree)
poly1d_fn = np.poly1d(coef)

# 生成密集且排序的x序列,用于绘制平滑曲线
x_smooth = np.linspace(min(x), max(x), 100)

# 绘制原始数据点和拟合曲线
plt.scatter(x, y, label='原始数据')
plt.plot(x_smooth, poly1d_fn(x_smooth), label=f'{degree}次拟合曲线', color='orange')

plt.legend()
plt.show()

print(poly1d_fn)

关键修复点

  • 修正plt.plot调用:去掉多余的空字符串,直接传递x_smooth(密集x序列)和对应的拟合值poly1d_fn(x_smooth)。
  • 使用密集x序列:用np.linspace在原始x的取值范围内生成100个均匀点,确保拟合曲线平滑连续,不会因原始点的离散性变成折线。

内容的提问来源于stack exchange,提问作者ggggg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 20:40:24