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

如何移除Matplotlib子图组边缘的边距与空白区域

彻底移除Matplotlib子图网格的边缘空白和边框

要实现完全无空白、子图紧密排列的效果,你需要在现有代码基础上做以下关键调整:

  • 将subplots_adjust的left、right、top、bottom全部设为0,同时把wspace和hspace设为0,彻底消除子图间和画布边缘的间距
  • 用imshow替代matshow(matshow默认强制轴宽高比为1,会自带额外边距)
  • 确保figsize的宽高比和子图的行列比例严格匹配,避免画布本身存在多余空间

修改后的完整代码:

import numpy as np
import matplotlib.pyplot as plt

rows, columns = 4, 3
images = [np.random.rand(4, 4) for i in range(rows * columns)]

# 画布尺寸比例与子图行列比例一致,保证无多余空间
fig, axs = plt.subplots(rows, columns, figsize=(columns, rows))
axs = axs.flatten()

for img, ax in zip(images, axs):
    # 使用imshow并设置aspect='auto',让图像完全填充子图区域
    ax.imshow(img, aspect='auto')
    # 完全关闭轴的所有显示元素
    ax.axis('off')
    # 移除子图的边框
    ax.set_frame_on(False)

# 彻底清除所有内外间距
plt.subplots_adjust(left=0, right=1, top=1, bottom=0, wspace=0, hspace=0)

plt.show()

关键调整说明

  1. subplots_adjust参数:left=0, right=1, top=1, bottom=0让子图完全填满整个画布,wspace=0, hspace=0消除子图之间的横向、纵向间隙
  2. imshow替代matshow:matshow会强制轴宽高比为1,即使子图尺寸不匹配也会留空白;imshow搭配aspect='auto'可让图像完全填充子图区域
  3. set_frame_on(False):彻底移除子图的边框,避免残留边框占用空间

调整后,子图会完全紧密排列,画布边缘与子图之间不会有任何空白。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:34:51