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

如何在Google Colab中用Matplotlib分两行堆叠不同文件夹的图片?

解决Matplotlib在Colab中垂直堆叠展示图片的异常问题

咱们先拆解你代码里导致异常的几个关键问题:

  • 用错了绘图方法:你调用axs[0].plot()是用来画折线图的,展示图片根本不需要这个方法,完全是多余的操作。
  • 没绑定子图轴展示图片:你直接用plt.imshow()会默认把所有图片都画在同一个当前轴上,最后就只显示最后一张,而你创建的两行子图轴根本没被用到,所以会是空的。
  • 变量名错误:代码里的len(images)是个未定义的变量,而且就算定义了,这个计算对展示图片来说毫无意义。
  • 子图初始化不对:如果想每行展示多张图,你得在subplots()里同时指定行数和列数,只给行数的话默认是1列,根本满足不了你每行2张的需求。

修正后的完整代码

import glob
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
%matplotlib inline

# 先挂载Google Drive(如果还没挂载的话)
from google.colab import drive
drive.mount('/content/drive')

# 读取两个文件夹中的图片
front_images = []
for img_path in glob.glob('drive/My Drive/chaospicsf/*.png'):
    front_images.append(mpimg.imread(img_path))
back_images = []
for img_path in glob.glob('drive/My Drive/chaospicsb/*.png'):
    back_images.append(mpimg.imread(img_path))

columns = 2  # 每行展示2张图片
rows = 2     # 总共2行

# 创建2行2列的子图布局,figsize可以按需调整画布大小
fig, axs = plt.subplots(rows, columns, figsize=(10, 8))
fig.suptitle('Vertically stacked subplots', y=1.02)  # 调整标题位置避免和图片重叠

# 展示第一行(front文件夹)的图片
for i, image in enumerate(front_images[:columns]):
    axs[0, i].imshow(image)
    axs[0, i].axis('off')  # 关闭坐标轴,让图片展示更整洁

# 展示第二行(back文件夹)的图片
for i, image in enumerate(back_images[:columns]):
    axs[1, i].imshow(image)
    axs[1, i].axis('off')

plt.tight_layout()  # 自动调整子图间距,避免图片互相挤压
plt.show()

额外说明

  • 如果你的文件夹里图片数量超过2张,上面的代码会只取前2张展示;如果想展示所有图片,可以根据图片数量动态计算列数,比如columns = len(front_images)(但要注意画布大小要对应调整,避免图片太小)。
  • axis('off')是可选的,如果你需要保留坐标轴可以去掉这行。
  • 一定要确保已经挂载了Google Drive,否则会找不到drive/My Drive/路径下的文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 08:37:40