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

如何提取matplotlib中plt.plot生成折线图的插值点x/y坐标

解决方案

matplotlib绘制折线时,原始点之间的线段默认采用线性插值计算路径,你可以通过以下两种方式获取插值后的坐标:

方法1:手动计算线性插值(推荐,灵活度高)

直接使用numpy内置的线性插值方法,和matplotlib绘图的插值逻辑完全一致,可自定义插值密度:

import matplotlib.pyplot as plt
import numpy as np

# 原始数据
x = np.arange(5, 46, 5)
y = np.array([1.60,1.56,1.54,1.53,1.53,1.58,1.70,1.97,2.68])

# 自定义生成需要插值的x坐标,示例为步长1的所有连续x值
x_interp = np.arange(x.min(), x.max() + 1, 1)
# 线性插值计算对应y值
y_interp = np.interp(x_interp, x, y)

# 验证插值点和原折线完全重合
plt.plot(x, y, label="原始折线", alpha=0.5)
plt.scatter(x_interp, y_interp, c="red", s=10, label="插值点")
plt.legend()
plt.show()

# 打印所有插值点坐标
for xi, yi in zip(x_interp, y_interp):
    print(f"x={xi:.2f}, y={yi:.4f}")

你可以按需调整x_interp的生成规则,比如设置每个原始点之间插入固定数量的点,或者指定总插值点数。

方法2:从绘图对象获取渲染坐标

如果你需要获取画布渲染后的实际像素坐标,可以直接从plt.plot返回的Line2D对象中提取:

line, = plt.plot(x, y)
# 把数据坐标系的坐标转换为画布像素坐标
pixel_coords = line.get_transform().transform(line.get_xdata())
x_pixel, y_pixel = pixel_coords.T

该方法返回的是像素级坐标,如果你需要的是原始数据坐标系下的插值点,优先使用方法1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 12:21:03