使用 Matplotlib 创建子图

MatplotlibMatplotlibBeginner
立即练习

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

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

简介

Matplotlib 是 Python 中一个流行的数据可视化库。它提供了各种函数来创建不同类型的图表。其关键特性之一是能够创建子图。这允许用户在同一图形中创建多个图表,从而更轻松地比较不同数据集或同一数据的不同视图。在本实验中,我们将逐步介绍使用 Matplotlib 创建子图的过程。

虚拟机使用提示

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

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

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

创建一个包含单个子图的图形

创建单个子图的最简单方法是使用不带任何参数的 subplots() 函数。此函数返回一个 Figure 对象和一个单独的 Axes 对象。

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

沿一个方向堆叠子图

要创建垂直或水平堆叠的多个子图,我们可以将行数和列数作为参数传递给 subplots() 函数。返回的 axs 对象是一个一维 numpy 数组,其中包含创建的 Axes 列表。

fig, axs = plt.subplots(2)
axs[0].plot(x, y)
axs[1].plot(x, -y)

沿两个方向堆叠子图

要创建子图网格,我们可以将行数和列数作为参数传递给 subplots() 函数。返回的 axs 对象是一个二维 NumPy 数组。

fig, axs = plt.subplots(2, 2)
axs[0, 0].plot(x, y)
axs[0, 1].plot(x, y, 'tab:orange')
axs[1, 0].plot(x, -y, 'tab:green')
axs[1, 1].plot(x, -y, 'tab:red')

共享坐标轴

默认情况下,每个 Axes 都是独立缩放的。要对齐子图的水平或垂直轴,我们可以使用 sharexsharey 参数。

fig, (ax1, ax2) = plt.subplots(2, sharex=True)
ax1.plot(x, y)
ax2.plot(x + 1, -y)

极坐标图

通过将 projection='polar' 参数传递给 subplots() 函数,我们可以创建极坐标 Axes 的网格。

fig, (ax1, ax2) = plt.subplots(1, 2, subplot_kw=dict(projection='polar'))
ax1.plot(x, y)
ax2.plot(x, y ** 2)

总结

在本实验中,我们学习了如何使用Matplotlib创建子图。我们涵盖了创建带有单个子图的图形、沿一个方向堆叠子图、沿两个方向堆叠子图、共享坐标轴以及创建极坐标图。通过使用这些技术,我们可以创建复杂的可视化效果,使我们能够一次比较和分析多个数据集。