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

如何设置matplotlib的plt.axhline()让水平线在指定x轴值停止

plt.axhline()按实际x坐标设置终止位置的解决方法

plt.axhline()的xmin、xmax参数默认接收的是x轴范围的归一化比例值,取值区间为[0,1]:0对应x轴最左端点,1对应x轴最右端点,不能直接传入实际的x坐标数值。

针对你的示例场景的修改方案

你的代码中x轴的取值范围是-60~+60:

  • 如果要让水平线从x轴最左侧画到x=5的位置终止,先计算归一化后的xmax值:(5 - (-60))/(60 - (-60)) ≈ 0.542
  • 如果要让水平线仅在x绝对值≤5的区间显示(即左右两端分别在x=-5和x=5的位置),还需要额外计算归一化xmin值:(-5 - (-60))/(60 - (-60)) ≈ 0.458

修改后的代码如下:

import numpy as np
import matplotlib.pyplot as plt

plt.figure()
plt.plot(np.arange(-60, 60, 20), np.arange(0, 1.2, 0.2))
# 获取当前x轴的左右边界值,适配动态x轴场景
x_left, x_right = plt.xlim()
# 计算x=5对应的归一化xmax
xmax_norm = (5 - x_left) / (x_right - x_left)
# 仅画到x=5的写法
plt.axhline(y = 0.5, xmax = xmax_norm, c= 'r')

# 如果要画在-5~+5区间,替换成下面这句即可
# xmin_norm = (-5 - x_left) / (x_right - x_left)
# plt.axhline(y = 0.5, xmin = xmin_norm, xmax = xmax_norm, c= 'r')

plt.show()

更简单的替代方案

如果你不想手动计算归一化比例,可以直接使用plt.hlines()函数,该函数的xmin、xmax参数直接接收实际x坐标数值,不用做转换:

# 直接绘制x从-5到5、y=0.5的水平线
plt.hlines(y=0.5, xmin=-5, xmax=5, color='r')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:54:02