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

matplotlib多子图场景下如何调整colorbar位置且无需依赖imshow函数

不依赖imshow移动colorbar到指定子图的实现方案

不需要依托imshow函数即可实现需求,你当前使用ScalarMappable作为colorbar映射源的写法完全兼容,核心是调用fig.colorbar()时指定绑定的子图对象即可,具体方案如下:

  • 方案1:自动对齐指定子图
    调用colorbar时传入ax参数,参数值为你要挂载colorbar的目标子图对象,colorbar会自动从该子图的侧边切出空间放置,自动对齐子图高度,无需手动计算坐标。修改后的代码示例:

    fig,(axe1,axe2)=plt.subplots(2,1,figsize=(40,40))
    axe1.barh(count['platform'],count['numbers'],0.8,color=color)
    axe2.barh(combine['platform'],combine['score'],color='pink')
    # 核心修改:传入ax参数指定绑定axe1,即可让colorbar对齐到第一个子图右侧
    sm = cm.ScalarMappable(cmap='hsv',norm=col.Normalize(0,1))
    fig.colorbar(sm, ax=axe1)
    

    如果需要colorbar对齐多个子图的总高度,可将ax参数设置为子图列表,例如ax=[axe1, axe2]

  • 方案2:自定义colorbar精确位置
    如果你需要灵活调整colorbar的位置、宽高,可先手动在画布上创建专属坐标轴区域放置colorbar,再通过cax参数传入colorbar方法即可,位置参数按画布宽高的比例设置,取值范围为0~1。示例代码:

    # 四个参数依次为 [left, bottom, width, height],可根据实际显示效果调整数值
    cax = fig.add_axes([0.92, 0.5, 0.02, 0.35])
    fig.colorbar(sm, cax=cax)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:06:07