Python中如何让所有子图axes的colorbar使用统一数值范围
统一多子图colorbar范围的实现方法
你已经算出全局数值上下限的前提下,有两种常用的实现方案:
- 方案1(最推荐):在创建每个子图的
contourf对象时,直接传入全局上下限作为参数
该方案从绘图的数值映射环节就统一了范围,后续生成的colorbar会自动适配统一范围,不需要额外调整。示例代码如下:# 替换为你实际计算得到的全局上下限 global_vmin = 你的计算结果最小值 global_vmax = 你的计算结果最大值 # 每个子图画contourf时都指定vmin、vmax参数 div4_contourf = ax3.contourf(X轴数据, Y轴数据, 待绘制的Z轴数据, vmin=global_vmin, vmax=global_vmax) # 原有colorbar代码无需修改 colorbar_div4 = fig.colorbar(div4_contourf, ax=ax3, orientation='vertical') colorbar_div4.set_label('1/s', fontsize=12) - 方案2:已完成绘图后调整范围
如果你已经生成了所有contourf对象不想重新绘图,也可以直接修改每个可映射对象的数值范围,再更新对应colorbar即可:# 先设置全局上下限 global_vmin = 你的计算结果最小值 global_vmax = 你的计算结果最大值 # 对每个子图的contourf对象执行范围修改 div4_contourf.set_clim(global_vmin, global_vmax) # 更新对应colorbar colorbar_div4.update_normal(div4_contourf)
另外如果不需要每个子图单独配置colorbar,你也可以让4个子图共用一个colorbar,既节省空间也更方便对比,示例代码如下:
# 只要把ax参数设置为所有子图对象组成的列表即可 fig.colorbar(div4_contourf, ax=[ax0, ax1, ax2, ax3], orientation='vertical').set_label('1/s', fontsize=12)
内容的提问来源于stack exchange,提问作者SAVen
相关产品推荐
相关产品推荐

