简介
在本实验中,我们将使用 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 在探索和可视化数据方面的强大功能和灵活性。