使用 Python 进行 Matplotlib 数据可视化

PythonPythonBeginner
立即练习

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

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

简介

在本实验中,我们将使用 Python 的 Matplotlib 库来计算 100 个数据集的均值(mu)和标准差(sigma),并绘制 mu 与 sigma 的关系图。我们还将为该图添加交互性,以便当你点击其中一个(mu, sigma)点时,生成该点的数据集的原始数据将被绘制出来。

虚拟机使用提示

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

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

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

生成随机数据

首先,我们需要生成 100 个随机数据集,每个数据集包含 1000 个介于 0 和 1 之间的随机数。我们将使用 numpy 的随机模块来生成随机数据。

import numpy as np

np.random.seed(19680801)

X = np.random.rand(100, 1000)

计算均值和标准差

接下来,我们将计算这 100 个数据集中每个数据集的均值和标准差。我们将使用 numpy 的 mean 和 std 函数来计算这些值。

xs = np.mean(X, axis=1)
ys = np.std(X, axis=1)

绘制数据

现在,我们将使用 Matplotlib 的 pyplot 模块绘制 mu 与 sigma 的关系图。我们将使用计算得到的 mu 和 sigma 值创建一个散点图。我们还将通过将 picker 参数设置为 True 来为该图添加交互性。

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.set_title('click on point to plot time series')
line, = ax.plot(xs, ys, 'o', picker=True, pickradius=5)

添加交互性

当点击散点图上的一个点时,我们希望绘制生成该点的数据集的原始数据。我们将定义一个函数 onpick,当点击一个点时该函数会被调用。这个函数将绘制原始数据,并显示该数据集的均值和标准差。

def onpick(event):

    if event.artist!= line:
        return

    N = len(event.ind)
    if not N:
        return

    figi, axs = plt.subplots(N, squeeze=False)
    for ax, dataind in zip(axs.flat, event.ind):
        ax.plot(X[dataind])
        ax.text(.05,.9, f'mu={xs[dataind]:1.3f}\nsigma={ys[dataind]:1.3f}',
                transform=ax.transAxes, va='top')
        ax.set_ylim(-0.5, 1.5)
    figi.show()


fig.canvas.mpl_connect('pick_event', onpick)

显示图表

最后,我们将使用 show 函数来显示图表。

plt.show()

总结

在这个实验中,我们学习了如何使用 Matplotlib 来计算 100 个数据集的均值和标准差,并绘制 mu 与 sigma 的关系图。我们还为该图添加了交互性,以便在点击一个点时,显示生成该点的数据集的原始数据。这个实验展示了 Matplotlib 在探索和可视化数据方面的强大功能和灵活性。