Python を使った Matplotlib によるデータ可視化

Beginner

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

はじめに

この実験では、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 の力と柔軟性を示しています。