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

Matplotlib绘制2×2子图时如何下移左下角子图对齐避免标题重叠

2x2子图错位修复方法

布局错位的核心原因是其余子图附带的colorbar挤占了坐标轴空间,未配置colorbar的左下角子图按默认2x2网格位置排布,就会出现和其他子图不对齐、和上方子图标题重叠的问题。

方案1:统一网格布局(根源解决,推荐)

放弃逐个调用add_subplot的方式,用ImageGrid统一创建子图网格,自动对齐所有子图与colorbar尺寸,从根源避免错位:

  • 导入依赖
from mpl_toolkits.axes_grid1 import ImageGrid
  • 初始化2x2网格
grid = ImageGrid(
    fig, 111,
    nrows_ncols=(2, 2),
    axes_pad=0.4, # 调整该值增大/缩小子图间距,避免标题重叠
    cbar_mode='edge', # 也可设为'each'为每个子图单独配置等大colorbar
    cbar_pad=0.15
)
# 按索引取用子图即可,左下角对应索引2,替换你原来的add_subplot代码
ax_bl = grid[2]

方案2:手动调整位置(适配现有代码)

如果不想重构现有绘图逻辑,可直接获取其他对齐子图的位置参数,强制给左下角子图设置相同的位置基准:

ax = fig.add_subplot(2,2,3,projection=proj)
# 获取右下角同列已对齐子图的位置边界
br_pos = fig.axes[3].get_position()
# 给左下角子图设置相同的x轴位置、宽高,y轴位置与右下角子图对齐
ax.set_position([br_pos.x0, br_pos.y0, br_pos.width, br_pos.height])

补充:如果单独给子图加colorbar,所有colorbar统一传入fraction=0.046, pad=0.04参数,避免不同colorbar占比不一致导致新的错位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 01:40:05