📜  subplot (1)

📅  最后修改于: 2023-12-03 15:20:22.589000             🧑  作者: Mango

使用 Subplot 绘制多个子图

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 可以在以下场景中使用:

  1. 对比多个数据集的趋势。
  2. 在同一图形中显示多个相关数据集。
  3. 将数据分成各个子集并查看其分布。
  4. 将多个版本的同一图形组合在一起以比较不同之处。

Subplot 是 Matplotlib 中一个强大的工具,能够以几种方式进行子图布局,并与其他 Matplotlib 工具集成,提供灵活的数据可视化方式,非常适用于数据分析和研究。