使用 Matplotlib 的 ImageGrid 对齐图像

Beginner

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

简介

在本教程中,我们将学习如何使用 Matplotlib 中 mpl_toolkits.axes_grid1 里的 ImageGrid 来对齐多个不同大小的图像。

虚拟机使用提示

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

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

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

导入必要的库

首先,我们需要导入必要的库,包括 Matplotlib、cbook 和 ImageGrid。

import matplotlib.pyplot as plt
from matplotlib import cbook
from mpl_toolkits.axes_grid1 import ImageGrid

创建一个图形和图像网格

接下来,我们使用 nrows_ncols 参数创建一个图形和图像网格,以定义网格的行数和列数。

fig = plt.figure(figsize=(5.5, 3.5))
grid = ImageGrid(fig, 111,  ## 类似于 subplot(111)
                 nrows_ncols=(1, 3),
                 axes_pad=0.1,
                 label_mode="L")

加载图像数据

我们将使用来自 cbook 的一个名为 bivariate_normal.npy 的示例图像数据来演示图像网格。我们使用 cbook 中的 get_sample_data 函数加载图像数据。

Z = cbook.get_sample_data("axes_grid/bivariate_normal.npy")
im1 = Z
im2 = Z[:, :10]
im3 = Z[:, 10:]
vmin, vmax = Z.min(), Z.max()

在图像网格中显示图像

最后,我们使用 imshow 函数和 zip 函数在图像网格中显示图像,以便遍历网格中的各个轴。

for ax, im in zip(grid, [im1, im2, im3]):
    ax.imshow(im, origin="lower", vmin=vmin, vmax=vmax)

plt.show()

总结

在本教程中,我们学习了如何在 Matplotlib 中使用 ImageGrid 来排列多个不同大小的图像。我们首先导入必要的库,然后创建一个图形和图像网格,加载图像数据,最后在图像网格中显示图像。