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
相关产品推荐
相关产品推荐

