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

使用样条插值绘图并标注最大值对应x、y轴数值的实现方法

最大值点虚线标注实现方案

你提供的示例代码中x_数组长度为5,y_数组长度为6,长度不匹配会导致插值函数报错,我们先统一两组数据长度后再实现标注功能。

实现该需求的核心逻辑是调用matplotlib的内置方法绘制垂直/水平虚线,再在坐标轴旁添加对应数值标注即可,完整可运行代码如下:

import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import make_interp_spline

# 修正原数据长度不匹配问题
x_ = np.array([1, 2.5, 2.7, 3, 8])
y_ = np.array([1, 2, 3, 5, 4])
# 样条插值生成平滑曲线
spline = make_interp_spline(x_, y_)
x = np.linspace(x_.min(), x_.max(), 500)
y = spline(x)

# 定位曲线最大值点
xmax = x[np.argmax(y)]
ymax = y.max()

# 绘制基础曲线与最大值标记点
plt.plot(x, y)
plt.plot(xmax, ymax, 'o', color='crimson')

# 绘制指向x轴的垂直虚线
# ymax参数取值为0~1,代表虚线终点在y轴总高度的占比,计算后刚好从最大值点落到x轴
plt.axvline(
    x=xmax,
    ymin=0,
    ymax=(ymax - plt.ylim()[0])/(plt.ylim()[1] - plt.ylim()[0]),
    linestyle='--',
    color='gray',
    alpha=0.7
)
# 绘制指向y轴的水平虚线
# xmax参数取值为0~1,代表虚线终点在x轴总宽度的占比,计算后刚好从最大值点落到y轴
plt.axhline(
    y=ymax,
    xmin=0,
    xmax=(xmax - plt.xlim()[0])/(plt.xlim()[1] - plt.xlim()[0]),
    linestyle='--',
    color='gray',
    alpha=0.7
)

# 在x轴旁标注最大值对应的x数值
plt.text(
    xmax,
    plt.ylim()[0],
    f'x={xmax:.2f}',
    ha='center',
    va='top',
    color='crimson'
)
# 在y轴旁标注最大值对应的y数值
plt.text(
    plt.xlim()[0],
    ymax,
    f'y={ymax:.2f}',
    ha='right',
    va='center',
    color='crimson'
)

plt.show()

如果需要调整标注的位置、颜色或者虚线的样式,直接修改对应参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:24:05