如何在matplotlib中仅高亮图表底部指定x轴范围而非全高度填充
实现指定高度垂直区间高亮的两种方案
方案1:直接调整axvspan的纵向范围参数
axvspan本身就支持ymin和ymax参数,取值为0~1的轴相对坐标,0对应图表底部,1对应图表顶部。你只需限制这两个参数的取值就能得到非全高的高亮区域:
import matplotlib.pyplot as plt fig, ax = plt.subplots() # 绘制示例曲线 ax.plot([0,1,2,3], [1,3,2,4]) # 高亮x=0.5到1.5范围,仅覆盖底部20%的高度 ax.axvspan(xmin=0.5, xmax=1.5, ymin=0, ymax=0.2, color='yellow', alpha=0.3) plt.show()
方案2:使用Rectangle补丁实现自定义尺寸高亮
如果你需要基于数据坐标而非相对坐标控制高亮的纵向范围,可以用矩形补丁实现:
import matplotlib.pyplot as plt from matplotlib.patches import Rectangle fig, ax = plt.subplots() ax.plot([0,1,2,3], [1,3,2,4]) # 定义矩形参数:x起始位置、y起始位置、宽度、高度(均为数据坐标系数值) # 示例:x从0.5到1.5,y从0到0.5的高亮区域 highlight = Rectangle((0.5, 0), width=1, height=0.5, color='yellow', alpha=0.3) ax.add_patch(highlight) plt.show()
方案选择参考
- 如果需要高亮区域始终固定在底部不随y轴缩放变化,选方案1调整
ymax即可 - 如果需要高亮区域的高度和y轴数据绑定,随缩放同步变化,选方案2更合适
内容的提问来源于stack exchange,提问作者user2563661
相关产品推荐
相关产品推荐

