📅  最后修改于: 2023-12-03 15:20:22.589000             🧑  作者: Mango
Subplot 是 matplotlib 库中的一个函数,可以用来创建一个包含多个子图的图形。这个函数需要三个参数:行数、列数和子图编号。行数和列数决定了子图的排列方式,子图编号可以指定用哪个子图来绘制数据。
要在一个图形中创建多个子图,可以使用 plt.subplots()
函数,该函数返回一个元组 (fig, axs)
,其中 fig
是图形对象,axs
是一个 ax 对象数组,每个元素都是一个子图对象。
import matplotlib.pyplot as plt
fig, axs = plt.subplots(nrows=2, ncols=2)
这里将创建一个 2x2 的子图,每个子图都可以通过 axs[row_index, col_index]
来访问。
使用 plt.subplots()
函数和 axs
对象数组创建多个子图后,就可以像在单个图形中一样在每个子图中绘制数据。
import numpy as np
import matplotlib.pyplot as plt
fig, axs = plt.subplots(nrows=2, ncols=2)
x = np.linspace(0, 10, 100)
y = np.sin(x)
axs[0, 0].plot(x, y)
axs[0, 1].scatter(x, y, s=10)
axs[1, 0].hist(y)
axs[1, 1].bar(x, y, width=0.1)
这里将在 4 个子图中分别绘制了折线图、散点图、直方图和条形图。
可以使用 plt.subplots()
函数的参数来调整子图之间的间距和整个图形的大小。
import numpy as np
import matplotlib.pyplot as plt
fig, axs = plt.subplots(
nrows=2,
ncols=2,
figsize=(8, 6), # 设置图形大小
sharey=True, # 共用 y 轴
gridspec_kw={'hspace': 0.3, 'wspace': 0.2}, # 设置子图行距为 0.3,列距为 0.2
)
x = np.linspace(0, 10, 100)
y = np.sin(x)
axs[0, 0].plot(x, y)
axs[0, 1].scatter(x, y, s=10)
axs[1, 0].hist(y)
axs[1, 1].bar(x, y, width=0.1)
这里将创建一个图形大小为 8x6 的图形,共用 y 轴,行间距为 0.3,列间距为 0.2。
Subplot 可以在以下场景中使用:
Subplot 是 Matplotlib 中一个强大的工具,能够以几种方式进行子图布局,并与其他 Matplotlib 工具集成,提供灵活的数据可视化方式,非常适用于数据分析和研究。