はじめに
この実験では、Python の Matplotlib ライブラリを使って、100 のデータセットの平均(mu)と標準偏差(sigma)を計算し、mu 対 sigma をプロットします。また、プロットにインタラクティビティを追加して、(mu, sigma)の点の 1 つをクリックすると、この点を生成したデータセットの元のデータがプロットされるようにします。
VM のヒント
VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。
時々、Jupyter Notebook が読み込み終わるまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証は自動化できません。
学習中に問題がある場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
ランダムデータの生成
まず、0 から 1 の間の 1000 個のランダムな数を含む 100 のランダムなデータセットを生成する必要があります。ランダムデータを生成するために、numpy の random モジュールを使用します。
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 の力と柔軟性を示しています。