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

如何仅缩小Matplotlib中底部两个子图(ax2、ax3)的垂直间距?

解决Matplotlib仅缩小底部两个子图垂直间距的问题

这问题我熟,全局的subplots_adjust(hspace)会统一修改所有子图的垂直间距,肯定满足不了你的需求。这里给你两种精准可控的方案,优先推荐第一种:

方案一:用GridSpec拆分布局(最灵活)

matplotlib.gridspec.GridSpec能把画布拆成独立区域,给每个区域单独设置间距,完美适配你的场景。我们把上方的两个大子图和底部的两个小子图分成两个独立的GridSpec,然后给底部的GridSpec设置更小的hspace:

import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec

fig = plt.figure(figsize=(14, 14))

# 上方区域:9行2列,保持原有的垂直间距0.25
gs_top = GridSpec(9, 2, figure=fig, hspace=0.25)
# 底部区域:2行2列,设置更小的垂直间距(比如0.05,你可以按需调整)
gs_bottom = GridSpec(2, 2, figure=fig, hspace=0.05)

# 添加上方的两个大子图,占满整个上方GridSpec的列
ax0 = fig.add_subplot(gs_top[:, 0])
ax1 = fig.add_subplot(gs_top[:, 1])

# 添加底部的两个子图,分别占底部GridSpec的第1行和第2行
ax2 = fig.add_subplot(gs_bottom[0, :])
ax3 = fig.add_subplot(gs_bottom[1, :])

# 隐藏所有子图的刻度
for ax in (ax0, ax1, ax2, ax3):
    ax.set_xticks([])
    ax.set_yticks([])

# 调整上下两个区域之间的整体间距(可选,按需微调)
fig.subplots_adjust(top=0.95, bottom=0.05, wspace=0.02)

为什么推荐这个方案?

  • 完全隔离了上下区域的间距设置,底部子图的间距只受gs_bottom的hspace控制,不会影响上方的大子图
  • 布局逻辑清晰,后续如果要调整其他子图的位置或间距,也很容易修改

方案二:手动调整子图位置(快速临时修改)

如果不想改动原有子图的创建代码,也可以手动获取子图的位置,直接调整它们的坐标来缩小间距:

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(14, 14))
ax0 = fig.add_subplot(12, 2, (1, 9))
ax1 = fig.add_subplot(12, 2, (2, 10))
ax2 = fig.add_subplot(14, 2, (13, 14))
ax3 = fig.add_subplot(14, 2, (15, 16))

for ax in (ax0, ax1, ax2, ax3):
    ax.set_xticks([])
    ax.set_yticks([])

# 先设置全局间距(保持原有设置)
fig.subplots_adjust(hspace=.25, wspace=.02)

# 获取底部两个子图的当前位置,格式是[left, bottom, width, height]
pos2 = ax2.get_position()
pos3 = ax3.get_position()

# 把ax3往上挪,缩小和ax2的间距(数值0.03可以按需调整)
new_pos3 = [pos3.x0, pos3.y0 + 0.03, pos3.width, pos3.height]
ax3.set_position(new_pos3)

# 或者反过来把ax2往下挪,效果一样:
# new_pos2 = [pos2.x0, pos2.y0 - 0.03, pos2.width, pos2.height]
# ax2.set_position(new_pos2)

这个方案的优缺点:

  • 优点:不用修改原有子图的创建逻辑,快速生效
  • 缺点:手动调整的数值是固定的,如果后续调整画布大小,间距可能会错乱,适合临时调试用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 16:02:29