Matplotlib 网格布局可视化

PythonPythonBeginner
立即练习

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

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

Matplotlib 是一个用于 Python 编程语言的数据可视化库。它提供了广泛的工具来创建不同类型的绘图和图表。Matplotlib 中的 GridSpec 模块允许我们创建灵活且复杂的子图布局。在本教程中,我们将学习如何使用 GridSpec 创建多列/行子图布局。

虚拟机使用提示

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

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

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

导入必要的库

首先,我们需要导入所需的库。我们将使用 Matplotlib 和 GridSpec。

import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec

创建一个图形

接下来,我们需要使用 plt.figure() 函数创建一个图形。我们可以将 layout 参数设置为 "constrained",以确保子图适合图形范围。

fig = plt.figure(layout="constrained")

创建一个网格布局规范(GridSpec)

我们可以使用 GridSpec() 函数创建一个网格布局规范(GridSpec)对象。我们需要指定网格中所需的行数和列数。在这个例子中,我们将创建一个 3x3 的网格。

gs = GridSpec(3, 3, figure=fig)

向网格布局规范(GridSpec)中添加子图

我们可以使用 fig.add_subplot() 函数向网格布局规范(GridSpec)中添加子图。我们可以使用网格布局规范(GridSpec)对象的索引表示法来指定子图在网格中的位置。例如,gs[0, :] 指定第一行和所有列。

ax1 = fig.add_subplot(gs[0, :])
ax2 = fig.add_subplot(gs[1, :-1])
ax3 = fig.add_subplot(gs[1:, -1])
ax4 = fig.add_subplot(gs[-1, 0])
ax5 = fig.add_subplot(gs[-1, -2])

自定义子图

我们可以根据需要自定义子图。例如,我们可以使用 fig.suptitle() 函数设置图形的标题,还可以使用 format_axes() 函数格式化坐标轴。

fig.suptitle("GridSpec")

def format_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)

format_axes(fig)

显示绘图

最后,我们可以使用 plt.show() 函数来显示绘图。

plt.show()

总结

在本教程中,我们学习了如何使用网格布局规范(GridSpec)在Matplotlib中创建多列/多行子图布局。我们创建了一个3x3的网格并向其中添加了子图。我们对这些子图进行了自定义并显示了绘图。网格布局规范(GridSpec)是在Matplotlib中创建复杂子图布局的强大工具。