📜  如何在 Matplotlib 中正确地在一张图中显示多个图像?(1)

📅  最后修改于: 2023-12-03 14:52:26.735000             🧑  作者: Mango

如何在 Matplotlib 中正确地在一张图中显示多个图像?

在 Matplotlib 中,我们可以使用 subplot() 函数创建一个包含多个子图的图表。这个函数接受三个参数:行数、列数和当前子图的编号,可以在同一个图表中创建任意数量的子图,每个子图可以显示不同的数据集。

以下是一个简单的例子,它创建一个包含两个子图的图表:

import matplotlib.pyplot as plt
import numpy as np

# 生成数据
x = np.linspace(0, 5, 10)
y = x ** 2

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

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

这个例子中,我们使用 linspace() 函数生成了 0-5 之间的 10 个数据点,并将它们的平方用作另一个数据集。我们在第一个子图中绘制了 xy,在第二个子图中绘制了 yx

subplot() 函数接受的参数 1, 2 表示行数和列数,而 3 表示当前子图的编号。总共有 2 个子图,所以行数和列数都是 1。

这个例子还展示了如何使用 'r''g' 等参数来定义线条的颜色。Matplotlib 提供了许多不同的颜色选项,包括简单的字母代码和 RGB 值。

除了 subplot() 函数,我们还可以使用 subplots() 函数创建一个包含多个子图的图表。这个函数返回一个元组,其中第一个元素是整个图表的引用,后面的元素是每个子图的引用。

以下是一个使用 subplots() 函数创建的包含三个子图的图表的例子:

import matplotlib.pyplot as plt
import numpy as np

# 生成数据
x = np.linspace(0, 5, 10)
y = x ** 2

# 创建图表和三个子图
fig, axes = plt.subplots(nrows=1, ncols=3)

# 在第一个子图中绘制数据
axes[0].plot(x, y, 'r')
axes[0].set_title('Square')

# 在第二个子图中绘制数据
axes[1].plot(y, x, 'g')
axes[1].set_title('Inverse')

# 在第三个子图中绘制数据
axes[2].plot(x, np.sqrt(y), 'b')
axes[2].set_title('Square Root')

在这个例子中,我们使用 subplots() 函数创建了一个包含三个子图的图表。我们还使用了 set_title() 函数来设置每个子图的标题。

除了使用 subplot()subplots() 函数,我们还可以在单个子图中绘制多个数据集。以下是一个创建带有两个数据集的线图的例子:

import matplotlib.pyplot as plt
import numpy as np

# 生成数据
x = np.linspace(0, 5, 10)
y1 = x ** 2
y2 = x ** 3

# 创建单个子图
fig, ax = plt.subplots()

# 在子图中绘制两个数据集
ax.plot(x, y1, 'r', label='Square')
ax.plot(x, y2, 'g', label='Cube')

ax.legend()

在这个例子中,我们使用 subplots() 函数创建了一个包含单个子图的图表。我们在子图中绘制了两个数据集,并使用 legend() 函数添加了一个图例来标识它们。