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

如何使用plt绘制拟合抛物线与对应离散数据点

实现代码

你可以直接用以下代码完成绘制,核心逻辑是先生成足够密集的横坐标点计算抛物线值,再分别绘制散点和折线:

import numpy as np
import matplotlib.pyplot as plt

# 你已有的数据
points = np.asarray([[1,10],[2,5.49],[3,0.89],[4,-0.14],[5,-1.07],[6,0.84]])
points_x_axis = points[:, 0]
points_y_axis = points[:, 1]
# 拟合系数
matrix = np.array([[ 0.83535714],[-7.74778571],[17.116     ]])
a, b, c = matrix.flatten()

# 生成密集的x值用于绘制平滑抛物线,范围覆盖原始x的取值区间
x_smooth = np.linspace(points_x_axis.min(), points_x_axis.max(), 100)
# 计算抛物线对应的y值
y_smooth = a * x_smooth ** 2 + b * x_smooth + c

# 绘制原始离散点,用红色圆点标注,添加标签用于图例
plt.scatter(points_x_axis, points_y_axis, color='red', label='原始离散点')
# 绘制拟合抛物线,用蓝色实线,添加标签
plt.plot(x_smooth, y_smooth, color='blue', label='拟合抛物线')

# 添加辅助显示元素
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.title('离散点与二次拟合抛物线对比')

# 显示图像
plt.show()

关键操作说明

  • 不能直接用原始离散的x值绘制抛物线,会导致折线生硬不够平滑,所以用np.linspace生成100个连续的密集x点
  • 用flatten()把二维的系数矩阵转为一维数组,方便直接提取三个系数
  • 分别调用plt.scatter()绘制散点、plt.plot()绘制拟合线,添加label参数后调用plt.legend()可以显示图例区分两种图形

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:36:03