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

如何在多曲线图表中根据指定x轴值获取对应y轴值

获取指定x值对应曲线的y轴数值

你的曲线由离散点绘制,要得到任意垂直线(指定x值)与曲线交点的精确y值,核心是用插值法补全离散点之间的数值。R中可以用approx()或approxfun()实现,下面是针对你示例代码的具体操作:

步骤1:为每条曲线创建插值函数

approxfun()会生成一个可直接调用的插值函数,默认采用线性插值(最贴合你绘图时的折线连接逻辑),也支持三次样条插值:

x1=c(1,5,7,9,15)  
y1=c(50,30,43,33,12)
x2=c(1,3,5.5,6,15)
y2=c(20,55,44,38,10)

# 为两条曲线分别生成插值函数
f_curve1 <- approxfun(x1, y1)
f_curve2 <- approxfun(x2, y2)

# 若需要三次样条插值,添加method参数
# f_curve1 <- approxfun(x1, y1, method = "spline")

步骤2:计算目标x值对应的y值

直接调用插值函数,传入你需要的x值(比如示例中的2.5、4、6、10):

target_x <- c(2.5, 4, 6, 10)

# 获取每条曲线的对应y值
y_curve1 <- f_curve1(target_x)
y_curve2 <- f_curve2(target_x)

# 整理成数据框方便查看
result_df <- data.frame(
  目标x值 = target_x,
  曲线1的y值 = y_curve1,
  曲线2的y值 = y_curve2
)

print(result_df)

运行后会得到如下结果:

目标x值 曲线1的y值 曲线2的y值
1     2.5       45.0       47.5
2     4.0       35.0       49.5
3     6.0       36.5       38.0
4    10.0       30.0       22.0

说明

  • 线性插值:计算两点之间的直线对应y值,和你绘图时的type="o"折线逻辑完全一致;
  • 三次样条插值:会生成更平滑的曲线插值结果,适合需要连续曲线的场景;
  • 如果目标x超出了曲线的x范围(比如x=0或x=20),默认会返回NA,可以通过rule参数控制,比如approxfun(x1, y1, rule=2)会用边界值填充超出范围的x。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 07:10:27