返回

matplotlib 中 subplot() 与 subplots() 方法详解:如何绘制子图和子区

windows

matplotlib 中 subplot() 和 subplots() 方法:深入探索

作为程序员,我们经常需要可视化数据,而 matplotlib 是 Python 中一个强大的库,可以轻松创建各种图表和图形。在 matplotlib 中,subplot() 和 subplots() 方法是用于创建子图或子区的重要工具,允许我们在同一图形中组织和显示多个数据集。

subplot() vs. subplots()

subplot() 和 subplots() 方法在语法和功能上有所不同,理解这些差异至关重要。

参数和语法

  • subplot() 接受三个参数:nrows、ncols 和 index。
  • subplots() 接受两个参数:nrows 和 ncols。

子图编号

  • subplot() 使用 index 参数指定要创建的子图。
  • subplots() 返回一个包含所有子图的 Figure 和 Axes 对象。

轴对象

  • subplot() 直接返回当前子图的 Axes 对象。
  • subplots() 返回一个包含所有子图 Axes 对象的列表。

对齐方式

  • subplot() 中的子图是逐行对齐的。
  • subplots() 中的子图可以水平或垂直对齐。

创建子图的顺序

  • subplot() 从左上角开始创建子图。
  • subplots() 从右上角开始创建子图。

用法示例

让我们用一个示例来演示这两个方法:

# 使用 subplot() 创建子图
import matplotlib.pyplot as plt

plt.subplot(2, 2, 1)  # 创建 22 列的第 1 个子图
plt.plot(x, y)

plt.subplot(2, 2, 2)  # 创建第 2 个子图
plt.plot(x, y)

plt.subplot(2, 2, 3)  # 创建第 3 个子图
plt.plot(x, y)

plt.subplot(2, 2, 4)  # 创建第 4 个子图
plt.plot(x, y)

plt.show()

# 使用 subplots() 创建子图
import matplotlib.pyplot as plt

fig, axes = plt.subplots(2, 2)  # 创建 22 列的子图

axes[0, 0].plot(x, y)  # 在第 1 个子图上绘制
axes[0, 1].plot(x, y)  # 在第 2 个子图上绘制
axes[1, 0].plot(x, y)  # 在第 3 个子图上绘制
axes[1, 1].plot(x, y)  # 在第 4 个子图上绘制

plt.show()

何时使用 subplot()?

  • 当逐个创建子图并直接访问它们的 Axes 对象时。

何时使用 subplots()?

  • 当批量创建子图并灵活调整它们的布局和对齐方式时。

结论

subplot() 和 subplots() 方法都是 matplotlib 中用于创建子图的有用工具,了解它们的差异对于根据具体需求选择最合适的工具至关重要。通过选择适当的方法,我们可以创建清晰、信息丰富的可视化,有效地传达我们的数据。

常见问题解答

  1. subplot() 和 subplots() 哪个更好?

这取决于你的具体需求。subplot() 逐个创建子图更方便,而 subplots() 批量创建子图并调整布局更灵活。

  1. 我可以使用 subplot() 创建水平排列的子图吗?

不行,subplot() 中的子图只能垂直排列。要水平排列子图,请使用 subplots()。

  1. 如何更改子图的对齐方式?

使用 subplots() 方法的 sharex 和 sharey 参数可以水平或垂直对齐子图。

  1. 如何为子图设置标题?

对于使用 subplot() 创建的子图,使用 plt.title() 函数。对于使用 subplots() 创建的子图,使用 axes[i, j].set_title() 函数。

  1. 如何在子图中添加图例?

使用 plt.legend() 函数为当前子图添加图例。对于使用 subplots() 创建的子图,可以使用 axes[i, j].legend() 函数。