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

如何设置Matplotlib非等间距子图?实现图像对紧凑排列

解决Matplotlib子图分组间距问题

你当前用plt.subplots(1,6)创建的子图是均匀间距的(每对图像和组间空隙一致),要实现组内图像紧密排列、组间保留较大间距的目标效果,推荐以下两种实操方案:

方法一:用GridSpec精细分组布局(更灵活)

GridSpec可以直接按“组”来划分布局,组内间距设为0,组间设置正常间距,代码逻辑清晰:

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

# 初始化画布
fig = plt.figure(figsize=(12, 4))
# 创建1行3列的大网格,控制组间间距(wspace=0.5可按需调整)
gs = gridspec.GridSpec(1, 3, wspace=0.5)

# 遍历每个图像组
for group_idx in range(3):
    # 给每个组创建1行2列的子网格,组内间距设为0
    sub_grid = gridspec.GridSpecFromSubplotSpec(1, 2, subplot_spec=gs[group_idx], wspace=0)
    # 添加组内两个子图
    ax_left = fig.add_subplot(sub_grid[0])
    ax_right = fig.add_subplot(sub_grid[1])
    
    # 替换成你的图像加载代码
    ax_left.imshow(plt.imread("your_left_image.png"))
    ax_right.imshow(plt.imread("your_right_image.png"))
    
    # 关闭右侧子图坐标轴(和你原操作一致)
    ax_right.axis('off')
    # 隐藏左侧子图的右侧边框,视觉上更紧凑
    ax_left.spines['right'].set_visible(False)
    ax_left.yaxis.set_ticks_position('left')

plt.tight_layout()
plt.show()

方法二:调整现有子图的位置参数(适配原有代码)

如果不想改布局逻辑,直接在plt.subplots(1,6)的基础上手动偏移偶数位置的子图,缩小组内间距:

import matplotlib.pyplot as plt

# 创建6个子图,先设置较大的组间全局间距
fig, axes = plt.subplots(1, 6, figsize=(12, 4))
fig.subplots_adjust(wspace=0.8)  # 组间间距,可按需调整

# 遍历每一对图像
for pair_start in range(0, 6, 2):
    ax1 = axes[pair_start]
    ax2 = axes[pair_start + 1]
    
    # 加载并显示图像
    ax1.imshow(plt.imread("your_image1.png"))
    ax2.imshow(plt.imread("your_image2.png"))
    
    # 关闭右侧子图坐标轴
    ax2.axis('off')
    # 手动将右侧子图左移,缩小组内间距(x0的偏移量可按需调整)
    original_pos = ax2.get_position()
    new_pos = [original_pos.x0 - 0.08, original_pos.y0, original_pos.width, original_pos.height]
    ax2.set_position(new_pos)
    
    # 优化左侧子图的边框显示
    ax1.spines['right'].set_visible(False)
    ax1.yaxis.set_ticks_position('left')

plt.show()

两种方案都能实现你要的效果:每对图像几乎紧挨着,组与组之间保留明显空隙,解决了原均匀布局的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 13:30:25