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

