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

matplotlib使用axvline绘制指定y范围竖线不符合预期求助

问题原因

ax.axvline() 方法的 ymin、ymax 参数传入的是轴比例值,取值范围为0~1,0对应y轴最低点,1对应y轴最高点,并不是实际的y轴数值。你直接传入5和9,超过了参数的有效范围,所以绘制结果不符合预期。

解决方案

有两种常用的实现方式:

方案1:调整axvline的参数为比例值

因为你已经手动设置了y轴范围是0~10,直接把y的实际值转成对应比例即可:

import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(20, 10))

ax.set_ylim(bottom=0, top=10)
for i in range(4):
    # 5对应的比例是5/10=0.5,9对应的比例是9/10=0.9
    ax.axvline(x=i, ymin=0.5, ymax=0.9, color="red", linewidth=40)
plt.show()

方案2:使用ax.vlines()方法(更推荐,无需手动计算比例)

ax.vlines()的ymin、ymax参数直接支持传入实际的y轴数值,更符合使用直觉:

import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(20, 10))

ax.set_ylim(bottom=0, top=10)
for i in range(4):
    # 直接传入实际y值即可
    ax.vlines(x=i, ymin=5, ymax=9, color="red", linewidth=40)
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:54:04