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

如何在Seaborn折线图中根据y值获取对应的x值

解决Seaborn折线图根据y值获取对应x值的问题

方法一:用插值函数直接计算(推荐)

折线图本质是离散点通过直线连接,因此可以直接从数据层面用线性插值计算y=10对应的x值,无需依赖绘图操作:

  1. 先明确x和y的对应数组:
    x = np.linspace(0.001, 3, 50)
    outlier_percent = [你的数值列表]
    
  2. 使用scipy的插值函数求解:
    from scipy.interpolate import interp1d
    
    # 创建匹配折线逻辑的线性插值函数
    interpolator = interp1d(outlier_percent, x, kind='linear')
    # 获取y=10对应的x值
    target_x = interpolator(10)
    print(target_x)
    

方法二:手动计算相邻点的交点

如果不想额外导入scipy,可以手动定位跨越y=10的相邻数据点,通过线性公式计算交点:

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

x = np.linspace(0.001, 3, 50)
y = outlier_percent

# 找到y值跨越10的相邻点索引
cross_idx = np.where(np.diff(np.sign(y - 10)))[0][0]

# 提取相邻点的x、y值
x_left, x_right = x[cross_idx], x[cross_idx+1]
y_left, y_right = y[cross_idx], y[cross_idx+1]

# 线性插值计算交点x值
target_x = x_left + (10 - y_left) * (x_right - x_left) / (y_right - y_left)

# 绘图验证(可选)
sns.lineplot(x=x, y=y)
plt.hlines(y=10, xmin=0, xmax=3, color='red')
plt.scatter(target_x, 10, color='green', s=100)  # 标记交点
plt.show()

print(target_x)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 21:03:17