用于数据分析的 Matplotlib 可视化

Beginner

This tutorial is from open-source community. Access the source code

简介

在本教程中,你将学习如何使用 Matplotlib 在 Python 中创建可视化图表。Matplotlib 是 Python 中一个流行的数据可视化库,用于创建各种图表和图形。使用 Matplotlib,你可以创建折线图、散点图、柱状图、直方图以及许多其他类型的可视化图表。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到笔记本标签页,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们会及时为你解决问题。

导入 Matplotlib

在创建任何可视化图表之前,我们需要导入 Matplotlib 库。我们还将使用 NumPy 库来生成一些示例数据。

import matplotlib.pyplot as plt
import numpy as np

创建示例数据

让我们创建一些将用于创建可视化图表的示例数据。我们将生成四组数据,每组有 11 个 x、y 数据点。

x = [10, 8, 13, 9, 11, 14, 6, 4, 12, 7, 5]
y1 = [8.04, 6.95, 7.58, 8.81, 8.33, 9.96, 7.24, 4.26, 10.84, 4.82, 5.68]
y2 = [9.14, 8.14, 8.74, 8.77, 9.26, 8.10, 6.13, 3.10, 9.13, 7.26, 4.74]
y3 = [7.46, 6.77, 12.74, 7.11, 7.81, 8.84, 6.08, 5.39, 8.15, 6.42, 5.73]
x4 = [8, 8, 8, 8, 8, 8, 8, 19, 8, 8, 8]
y4 = [6.58, 5.76, 7.71, 8.84, 8.47, 7.04, 5.25, 12.50, 5.56, 7.91, 6.89]

创建带有子图的图形

现在我们将创建一个带有四个子图的图形,每个数据集对应一个子图。我们还将为所有子图设置相同的 x 轴和 y 轴范围。

fig, axs = plt.subplots(2, 2, sharex=True, sharey=True, figsize=(6, 6),
                        gridspec_kw={'wspace': 0.08, 'hspace': 0.08})
axs[0, 0].set(xlim=(0, 20), ylim=(2, 14))
axs[0, 0].set(xticks=(0, 10, 20), yticks=(4, 8, 12))

绘制数据

对于每个子图,我们将绘制 x 和 y 数据点,并添加一条线性回归线。我们还将添加一个文本框,其中包含有关数据的一些统计信息。

datasets = {
    'I': (x, y1),
    'II': (x, y2),
    'III': (x, y3),
    'IV': (x4, y4)
}

for ax, (label, (x, y)) in zip(axs.flat, datasets.items()):
    ax.text(0.1, 0.9, label, fontsize=20, transform=ax.transAxes, va='top')
    ax.tick_params(direction='in', top=True, right=True)
    ax.plot(x, y, 'o')

    ## 线性回归
    p1, p0 = np.polyfit(x, y, deg=1)  ## 斜率,截距
    ax.axline(xy1=(0, p0), slope=p1, color='r', lw=2)

    ## 添加统计信息的文本框
    stats = (f'$\\mu$ = {np.mean(y):.2f}\n'
             f'$\\sigma$ = {np.std(y):.2f}\n'
             f'$r$ = {np.corrcoef(x, y)[0][1]:.2f}')
    bbox = dict(boxstyle='round', fc='blanchedalmond', ec='orange', alpha=0.5)
    ax.text(0.95, 0.07, stats, fontsize=9, bbox=bbox,
            transform=ax.transAxes, horizontalalignment='right')

plt.show()

解读结果

最终生成的可视化图表是一组四个子图,每个子图展示一个不同的数据集。所有子图的 x 轴和 y 轴范围相同。每个子图都包含 x 和 y 数据点以及一条线性回归线。每个子图右下角的文本框显示了有关数据的一些统计信息,包括均值、标准差和相关系数。

总结

在本教程中,你学习了如何使用 Matplotlib 在 Python 中创建可视化图表。你学习了如何创建带有子图的图形、绘制数据点、添加线性回归线以及添加包含数据统计信息的文本框。使用 Matplotlib,你可以创建各种各样的可视化图表来探索和分析你的数据。