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

matplotlib多子图地图场景下为colorbar添加指定值高亮线标记的方法

你原有代码不生效的核心问题是:cbar.ax的坐标系和colorbar代表的数值坐标系不统一。水平colorbar的x轴对应你的实际数值范围(9099.99),但y轴是colorbar厚度方向的归一化坐标(固定范围01),你给plot传入的y参数为99.99,远超出轴的显示范围,自然看不到绘制的线条。

正确实现方案

方案1:标记99.99的数值位置(最常用,绘制贯穿colorbar高度的竖线)

结合colorbar的norm方法把实际数值转为轴坐标,用axvline绘制竖线即可:

# 将99.99的实际数值转换为colorbar轴上的归一化x坐标
x_mark = cbar.norm(99.99)
# 绘制标记线,可自行调整color(颜色)、linewidth(线宽)、linestyle(线型)参数
cbar.ax.axvline(x=x_mark, color='white', linewidth=2, linestyle='-')

方案2:绘制贯穿colorbar左右的平行横线(适合标记阈值)

如果需要画和colorbar平行的横线,用axhline方法即可,y值取0~1之间的数值(0对应colorbar底部、1对应顶部、0.5对应中间):

# 在colorbar中间位置绘制一条从左到右的白线
cbar.ax.axhline(y=0.5, xmin=0, xmax=1, color='white', linewidth=2)

完整修改后代码

#fix the colorbar to the figure
cb_ax = fig.add_axes([0.1, 0.1, 0.8, 0.02])
#define the tick labels to the colorbar
bounds=[90,95,96,97,98,99,99.99]
#add the color bar
cbar = fig.colorbar(im, cax=cb_ax,orientation='horizontal', boundaries=bounds,shrink=0.2, pad=0.09)
cbar.set_label('Percentile of precipitation, [%]', fontsize=20, fontweight='bold')

# 标记99.99数值位置的正确代码,替换原有错误的plot行
x_mark = cbar.norm(99.99)
cbar.ax.axvline(x=x_mark, color='white', linewidth=2, linestyle='-')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:12:04