用于数据分析的 Matplotlib 可视化

PythonPythonBeginner
立即练习

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

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本教程中,你将学习如何使用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,你可以创建各种各样的可视化图表来探索和分析你的数据。