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

使用Matplotlib的GridSpec消除子图空白并调整右侧色条位置

Matplotlib双生子图布局优化方案

针对你遇到的两个布局问题,修改后的代码如下,同时附上关键调整说明:

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

data1 = np.random.rand(10,10)
data2 = np.random.rand(10,10)

fig = plt.figure(constrained_layout=True)
# 定义2行2列网格,第二列窄幅用于放置色条
gs = GridSpec(2, 2, figure=fig, width_ratios=[1, 0.05])

# 第一个子图占据第一行全部列,填满横向空间
ax1 = fig.add_subplot(gs[0, :])
img1 = ax1.imshow(data1, aspect='auto')
# 绑定底部色条到第一个子图,缩小边距
fig.colorbar(img1, ax=ax1, location='bottom', pad=0.05)

# 第二个子图占据第二行第一列
ax2 = fig.add_subplot(gs[1, 0])
img2 = ax2.imshow(data2, aspect='equal')  # 替代plt.axis("scaled"),效果一致
# 色条放在第二行第二列,与子图紧密相邻
fig.colorbar(img2, cax=fig.add_subplot(gs[1, 1]))

plt.show()

关键调整说明

  • 解决第一个子图右侧空白:将第一个子图的网格范围设为gs[0, :],让它占据第一行的所有列,从而填满整个图形的横向空间,不再留空白。
  • 让第二个子图色条紧邻:通过width_ratios设置第二列的窄幅宽度,专门用于放置色条;使用cax参数指定色条的轴位置,确保它和子图紧密贴合,不会出现多余间距。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 09:18:16