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

Python实现单画布无缩放显示多张图片并添加标题保存为PNG

没问题!你已经摸到正确的路子了——用Matplotlib的subplots确实是实现多图同画布展示的最优解之一。我把你的代码补全优化,再加上关键细节说明,这样你就能轻松实现需求啦:

实现4张图片的布局展示与保存

首先,确保你已经导入了必要的依赖库:

import matplotlib.pyplot as plt
import numpy as np

完整代码实现

# 假设你的4张图片数组为img1、img2、img3、img4(均为224x224x3的NumPy数组)
# 创建2行2列的子图布局,同时指定画布大小避免拥挤
fig, axs = plt.subplots(2, 2, figsize=(10, 10))

# 把图片和对应标题打包成列表,用循环替代重复代码,更简洁易维护
image_list = [img1, img2, img3, img4]
title_list = ['original', 'blur + noise', 'restored a', 'restored b']

# 遍历子图、图片和标题,批量设置展示参数
for ax, img, title in zip(axs.flat, image_list, title_list):
    ax.imshow(img)
    ax.axis('off')  # 关闭坐标轴,让图片展示更清爽
    ax.set_title(title, fontsize=12)  # 设置标题字体大小,避免过小看不清

# 自动调整子图间距,防止标题与图片、子图之间互相遮挡
plt.tight_layout()

# 保存整个画布为PNG格式,dpi设为300保证高清
plt.savefig('image_grid.png', dpi=300, bbox_inches='tight')
plt.close()  # 关闭画布释放内存资源

关键细节说明

  • 用axs.flat将2x2的子图数组展开成一维迭代器,不用手动逐个写axs[0,0]、axs[1,0]这类索引,代码更简洁。
  • figsize=(10,10)可以根据你的需求调整,数值越大画布越宽高,图片展示空间也更大。
  • tight_layout()和保存时的bbox_inches='tight'是避免元素遮挡的关键,前者调整子图间距,后者裁剪保存时的多余空白。
  • 设置dpi=300能让输出的PNG图片拥有高清分辨率,适合后续的文档插入或展示使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:34:49