在 Matplotlib 中添加子图

Suraj Joshi 2024年2月15日
  1. 使用 matplotlib.pyplot.figure.add_subplot() 方法在图中添加子图
  2. 使用 Matplotlib.pyplot.subplots() 创建带有子图的图
在 Matplotlib 中添加子图

本教程介绍了如何使用 Python 中的 matplotlib.pyplot.figure.add_subplot() 方法为 Matplotlib 图添加子图。

使用 matplotlib.pyplot.figure.add_subplot() 方法在图中添加子图

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(5, 5))

x = [1, 2, 3, 4, 5]
y = [2, 4, 5, 1, 2]

subplot = fig.add_subplot(1, 1, 1)
subplot.plot(x, y)

fig.suptitle("Figure with only one Subplot")
plt.show()

输出:

在 matplotlib 图中添加一个子图

它生成的图中只有一个子图。该图可以解释为一个包含所有子图和图中其他元素的高级元素。我们首先初始化大小为 (5,5) 的图对象,然后使用 add_subplot() 方法向图中添加一个子图。add_subplot() 方法的第 1 个参数代表图中子图的行数,第 2 个参数代表子图的列数,第 3 个参数代表子图在网格中的位置。

这里,fig.add_subplot(1,1,1) 将在图中 1 X 1 网格的第一个位置添加一个子图。另外,我们也可以使用 fig.add_subplot(111) 来实现同样的结果。add_subplot() 方法返回一个 axes 对象,它可以用来绘制和添加子图的细节。

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(8, 6))

ax_1 = fig.add_subplot(121)
ax_1.text(0.3, 0.5, "subplot(121)")

ax_2 = fig.add_subplot(222)
ax_2.text(0.3, 0.5, "subplot(222)")

ax_3 = fig.add_subplot(224)
ax_3.text(0.3, 0.5, "subplot(224)")

fig.suptitle("Figure with multiple Subplots")
plt.show()

输出:

在一个图形中添加多个子图 matplotlib

这里,我们有一个包含三个子图的图。第一个子图是网格中的第 1 个数字,有 1 行 2 列。第 2 个子图代表网格中的第 2 个数字,有两行两列。同样,第三行代表网格中第四个位置的子图,有两行两列。

使用 Matplotlib.pyplot.subplots() 创建带有子图的图

Matplotlib.pyplot.subplots() 也可以给图添加子图。我们将行数和列数作为参数传递给该方法,该方法返回一个图对象和轴对象,可以用来操作图形。

import matplotlib.pyplot as plt

fig, ax = plt.subplots(2, 1)

ax[0].text(0.3, 0.5, "1st Subplot")
ax[0].set_xticks([])
ax[0].set_yticks([])

ax[1].text(0.3, 0.5, "2nd Subplot")
ax[1].set_xticks([])
ax[1].set_yticks([])

fig.suptitle("Figure with 2 subplots", fontsize=16)
plt.show()

输出:

使用 subplots 方法在 matplotlib 中添加多个子图

它使用 subplots() 方法在两行一列的网格中生成一个有两个子图的图形。第 1 个子图或顶部的轴可以用 ax 列表中的第 1 个元素进行操作,第 2 个子图或底部的轴可以用 ax 列表中的第 2 个元素进行操作。

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y1 = [i ** 2 for i in x]
y2 = [4 * i + 1 for i in x]

fig, ax = plt.subplots(2, 1)

ax[0].plot(x, y1)
ax[0].set_xlabel("X")
ax[0].set_ylabel("Y")

ax[1].plot(x, y2)
ax[1].set_xlabel("X")
ax[1].set_ylabel("Y")

plt.tight_layout()
plt.show()

输出:

使用 subplots 方法自定义子图到图中的 matplotlib

它生成一个有两个子图的图形,在上面的子图中绘制 x^2 函数,在下面的子图中绘制 4x+1 函数。

作者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

相关文章 - Matplotlib Subplot