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

使用matplotlib的subplot2grid时如何避免子图网格对齐

解决Matplotlib多面板图形网格线不对齐问题

要实现底部3个面板垂直对齐但不与带多行y轴标签的顶部面板对齐,核心是将顶部面板和底部面板的布局分离,避免共享同一网格导致的对齐绑定。原代码使用subplot2grid基于统一网格布局,顶部面板的多行标签会挤占左侧空间,迫使底部面板跟随偏移,因此需要改用独立的GridSpec分别控制两组面板的位置。

修正后的实现代码

import matplotlib.pyplot as plt

# 自定义尺寸参数(可根据需求调整)
column = 8
height = 2

fig = plt.figure(figsize=(column, 3*height))

# 顶部面板独立布局:预留足够左侧空间容纳多行y轴标签
top_grid = fig.add_gridspec(1, 1, left=0.15, right=0.98, bottom=0.55, top=0.95)
ax_top = fig.add_subplot(top_grid[0, 0])
ax_top.set_ylabel('multi\nline\nlabel')

# 底部三个面板独立布局:左边缘对齐,互不挤压
bottom_grid = fig.add_gridspec(1, 3, left=0.08, right=0.98, bottom=0.05, top=0.45, wspace=0)
ax_bottom1 = fig.add_subplot(bottom_grid[0, 0])
ax_bottom2 = fig.add_subplot(bottom_grid[0, 1])
ax_bottom3 = fig.add_subplot(bottom_grid[0, 2])

# 可选:隐藏底部中间和右侧面板的y轴刻度标签,让对齐更整洁
ax_bottom2.set_yticklabels([])
ax_bottom3.set_yticklabels([])

plt.show()

关键说明

  1. 分离布局:通过add_gridspec分别创建顶部和底部的布局区域,两者的位置参数(left/right/bottom/top)独立设置,互不影响。
  2. 空间预留:顶部面板的left值设为更大的0.15,专门为多行y轴标签留出空间;底部面板的left值设为0.08,让三个面板左边缘对齐,不受顶部标签的空间挤占影响。
  3. 修正导入错误:原代码中import matplotlib as plt是错误的,需改为import matplotlib.pyplot as plt才能正常调用绘图API。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 03:04:59