接下来我将为您详细讲解“Python 一个figure上显示多个图像的实例”的攻略。
在 Matplotlib 中,使用 Figure
和 Axes
对象创建并显示图像。其中,Figure
对象表示整张图像,可以包含多个 Axes
对象;而 Axes
对象则表示具体的绘图区域,也就是我们常说的子图。
下面是一些示例,让我们看看如何在一个 Figure
上显示多个图像。
示例1:使用 subplot 函数实现
subplot
函数可以创建一个网格状子图,并返回每个子图的 Axes
对象。我们可以使用这些 Axes
对象绘制不同的图像。
import matplotlib.pyplot as plt
import numpy as np
# 创建一个 2x2 的子图
fig, axes = plt.subplots(nrows=2, ncols=2)
# 在第一个子图中绘制正弦曲线
x = np.linspace(0, 2*np.pi, 100)
y_sin = np.sin(x)
axes[0, 0].plot(x, y_sin)
axes[0, 0].set_title('sin(x)')
# 在第二个子图中绘制余弦曲线
y_cos = np.cos(x)
axes[0, 1].plot(x, y_cos)
axes[0, 1].set_title('cos(x)')
# 在第三个子图中绘制正切曲线
y_tan = np.tan(x)
axes[1, 0].plot(x, y_tan)
axes[1, 0].set_title('tan(x)')
# 在第四个子图中绘制正切曲线的导数
y_derivative = 1 / np.cos(x) ** 2
axes[1, 1].plot(x, y_derivative)
axes[1, 1].set_title('1/cos^2(x)')
# 调整子图之间的间距
plt.subplots_adjust(hspace=0.5)
# 显示图像
plt.show()
代码中,我们使用 plt.subplots
函数创建一个 2x2
的子图,并将返回的 Axes
对象存储在 axes
变量中。然后,我们在每个子图上绘制不同的曲线,并设置每个子图的标题。最后,使用 plt.subplots_adjust
函数调整子图之间的间距,并调用 plt.show
函数显示图像。
示例2:使用 gridspec 函数实现
gridspec
函数可以创建具有复杂网格布局的子图,可以通过指定每个子图的网格位置来创建非常灵活的布局。
import matplotlib.gridspec as gridspec
# 创建有特定布局的子图
fig = plt.figure(figsize=(8, 6))
gs = gridspec.GridSpec(2, 3, width_ratios=[2, 1, 1], height_ratios=[1, 2])
# 在第一个子图中绘制正弦曲线
x = np.linspace(0, 2*np.pi, 100)
y_sin = np.sin(x)
ax1 = fig.add_subplot(gs[0, 0])
ax1.plot(x, y_sin)
ax1.set_title('sin(x)')
# 在第二个子图中绘制余弦曲线
y_cos = np.cos(x)
ax2 = fig.add_subplot(gs[0, 1])
ax2.plot(x, y_cos)
ax2.set_title('cos(x)')
# 在第三个子图中绘制正切曲线
y_tan = np.tan(x)
ax3 = fig.add_subplot(gs[0, 2])
ax3.plot(x, y_tan)
ax3.set_title('tan(x)')
# 在第四个子图中绘制正切曲线的导数
y_derivative = 1 / np.cos(x) ** 2
ax4 = fig.add_subplot(gs[1, :])
ax4.plot(x, y_derivative)
ax4.set_title('1/cos^2(x)')
# 显示图像
plt.show()
代码中,我们首先创建包含两行三列子图的网格,其中第一行有两列,第二行有一列。我们还指定了每个子图的高度和宽度比例。然后,我们在每个子图上绘制不同的曲线,并设置每个子图的标题。最后,我们调用 plt.show
函数显示图像。
以上就是使用 subplot
和 gridspec
函数在一个 Figure
上显示多个图像的示例说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 一个figure上显示多个图像的实例 - Python技术站