如何在Seaborn折线图中根据y值获取对应的x值
解决Seaborn折线图根据y值获取对应x值的问题
方法一:用插值函数直接计算(推荐)
折线图本质是离散点通过直线连接,因此可以直接从数据层面用线性插值计算y=10对应的x值,无需依赖绘图操作:
- 先明确x和y的对应数组:
x = np.linspace(0.001, 3, 50) outlier_percent = [你的数值列表] - 使用
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
相关产品推荐
相关产品推荐

