Matplotlib 中的图像网格对齐

Beginner

This tutorial is from open-source community. Access the source code

简介

在本教程中,我们将学习如何使用 Matplotlib 的mpl_toolkits.axes_grid1模块中的ImageGrid函数。我们将创建一个 2x2 的图像网格,并使用ImageGrid函数对其进行排列。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到笔记本标签页,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,可以随时向 Labby 提问。课程结束后请提供反馈,我们会及时为你解决问题。

导入必要的库并创建图像数组

我们首先导入必要的库,并使用 NumPy 库中的arangereshape函数创建四个 10x10 的图像数组。

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.axes_grid1 import ImageGrid

im1 = np.arange(100).reshape((10, 10))
im2 = im1.T
im3 = np.flipud(im1)
im4 = np.fliplr(im2)

创建一个图形和一个图像网格对象

接下来,我们使用plt.figure函数创建一个figure对象,并传入figsize参数来设置图形的大小。然后,我们使用ImageGrid函数创建一个ImageGrid对象,并传入figure、作为子图参数的111、作为nrows_ncols参数的(2, 2)以创建一个 2x2 的轴网格,以及作为axes_pad参数的0.1来设置轴之间的间距。

fig = plt.figure(figsize=(4., 4.))
grid = ImageGrid(fig, 111, nrows_ncols=(2, 2), axes_pad=0.1)

遍历网格并绘制图像

然后,我们使用zip函数遍历grid对象,以便同时遍历轴和图像数组。我们使用imshow函数在其对应的轴上绘制每个图像。

for ax, im in zip(grid, [im1, im2, im3, im4]):
    ax.imshow(im)

显示绘图

最后,我们使用plt.show函数显示绘图。

plt.show()

总结

在本教程中,我们学习了如何使用 Matplotlib 的mpl_toolkits.axes_grid1模块中的ImageGrid函数在网格中对齐多个图像。我们创建了一个 2x2 的图像网格,并使用imshow函数进行绘制。