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

如何在AxesGrid布局中正确设置Colorbar的位置?

问题:为AxesGrid生成的子图添加底部共用色条

你当前的代码已经通过cbar_mode="single"和cbar_location="bottom"配置了共用色条的布局,问题出在色条的调用方式上。

你的原代码:

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import AxesGrid

mat = [[1,2],[3,4]]
fig = plt.figure()
grid = AxesGrid(fig, 111, nrows_ncols=(1,3),
       axes_pad=0.2, share_all=False, label_mode='L',
       cbar_location="bottom", cbar_mode="single")
for ax in grid.axes_all: im = ax.imshow(mat)
# plt.colorbar(im, cax=??)
plt.show()

正确的修改方式

不需要手动纠结cax参数的取值,直接利用AxesGrid自带的色条轴对象即可:

  • 因为设置了cbar_mode="single",所有子图共用一个色条,只需要对其中一个图像对象调用色条生成方法
  • grid.cb_axes是色条轴的列表,取第一个元素就是底部的色条轴

修改后的完整代码:

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import AxesGrid

mat = [[1,2],[3,4]]
fig = plt.figure()
grid = AxesGrid(fig, 111, nrows_ncols=(1,3),
       axes_pad=0.2, share_all=False, label_mode='L',
       cbar_location="bottom", cbar_mode="single")
# 遍历生成子图,保留任意一个图像对象即可
for ax in grid.axes_all:
    im = ax.imshow(mat)
# 为共用色条轴添加色条
grid.cb_axes[0].colorbar(im)
plt.show()

关键说明

  • 你之前尝试ax=grid.cb_axes无效,是因为grid.cb_axes是包含色条轴的列表,需要取索引[0]来获取具体的轴对象
  • 由于所有子图显示的是同一数据范围的图像,共用色条完全合理;如果子图数据范围不同,可以调整cbar_mode为"each"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 03:43:08