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

Matplotlib中如何为两条竖线间区域填充透明颜色

解决方案

直接使用ax.axvspan()即可实现指定x轴区间的纵向填充,核心是传入左右边界的x坐标,搭配透明度参数实现透明效果。

参数说明

axvspan的常用参数如下:

  • 第一个必填位置参数:填充区域左边界的x值,你的场景对应为2.5
  • 第二个必填位置参数:填充区域右边界的x值,你的场景对应为5.0
  • color:填充颜色,可和现有竖线保持同色保证视觉统一
  • alpha:透明度,取值范围01,0为完全透明,1为完全不透明,半透明效果推荐设置为0.20.3
  • 注意:为了避免填充区域遮挡上层的折线和标记,建议将axvspan的调用放在折线、标记绘制代码之前,也可以通过zorder参数手动调整图层优先级。

修改后可直接运行的代码

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
data = range(20)
# 先绘制填充层,保证上层内容不被遮挡
ax.axvspan(2.5, 5.0, color='blue', alpha=0.2)
ax.plot(data)
ax.plot(2.5, 2.5, marker="|", color='blue', markerfacecolor='none', mew=0.5, ms=10, alpha=0.5)
ax.plot(5.0, 5.0, marker="|", color='blue', markerfacecolor='none', mew=0.5, ms=10, alpha=0.5)

plt.show()

可选优化:你当前用plot搭配|标记绘制的是固定y位置的短竖线,如果需要绘制贯穿整个y轴范围的竖线,可以替换为ax.axvline()方法,无需传入y坐标,写法更简洁:

ax.axvline(x=2.5, color='blue', alpha=0.5, lw=0.5)
ax.axvline(x=5.0, color='blue', alpha=0.5, lw=0.5)

运行代码后,即可在两条竖线之间看到半透明的蓝色填充区域,不会遮挡原有折线内容,调整alpha和color参数即可修改填充的透明度和颜色。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:57:14