Matplotlib 子图生成教程

Beginner

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

简介

在本教程中,你将学习如何使用 Python 的 Matplotlib 库中的 subplot2grid 函数来生成子图。

虚拟机使用提示

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

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

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

导入所需库

在开始之前,我们需要使用以下代码导入 Matplotlib 库:

import matplotlib.pyplot as plt

创建一个图形对象

要创建一个图形对象,请使用以下代码:

fig = plt.figure()

使用 subplot2grid 定义子图

要使用 subplot2grid 定义子图,我们首先需要使用一个包含所需行数和列数的元组来指定网格的大小。我们还需要使用另一个元组来指定子图在网格中的位置。

例如,要创建一个 3x3 的网格,并在其中创建一个跨越整个第一行和所有三列的子图,我们使用以下代码:

ax1 = plt.subplot2grid((3, 3), (0, 0), colspan=3)

要创建一个跨越第二行和前两列的子图,我们使用:

ax2 = plt.subplot2grid((3, 3), (1, 0), colspan=2)

要创建一个跨越最后两行和最后一列的子图,我们使用:

ax3 = plt.subplot2grid((3, 3), (1, 2), rowspan=2)

要在最后一行和第一列创建一个子图,我们使用:

ax4 = plt.subplot2grid((3, 3), (2, 0))

要在最后一行和第二列创建一个子图,我们使用:

ax5 = plt.subplot2grid((3, 3), (2, 1))

标注坐标轴

要标注坐标轴,我们可以遍历图形的各个坐标轴,并使用 text 函数添加文本,同时使用 tick_params 函数移除刻度标签。

def annotate_axes(fig):
    for i, ax in enumerate(fig.axes):
        ax.text(0.5, 0.5, "ax%d" % (i+1), va="center", ha="center")
        ax.tick_params(labelbottom=False, labelleft=False)

显示绘图

要显示绘图,请使用以下代码:

plt.show()

总结

在本教程中,你学习了如何使用 Matplotlib 中的 subplot2grid 函数来生成子图。你还学习了如何创建图形对象、在网格中定义子图、标注坐标轴以及显示绘图。