[ipywidgets] 10. IntSliderでデータの移動平均をインタラクティブにプロット

ipywidgets

はじめに

この記事ではJupyter NotebookでipywidgetsモジュールのIntSliderを使用して、データの移動平均を対話的に表示する方法を解説します。ユーザーがスライダーでウィンドウサイズを調整すると、リアルタイムでグラフが更新される実装方法を学べます。

コード

解説

モジュールのインポートなど

データの生成

データ分析には1次元のランダムウォークを使用しました。1Dランダムウォークの詳細は下記で説明しています。なお、np.cumsum()関数は累積和を計算します。

[matplotlib animation] 64. 1次元ランダムウォークアニメーション
PythonのMatplotlibライブラリを使用して1次元ランダムウォークのアニメーションを作成する方法を解説。FuncAnimationクラスの活用法から実装まで、確率過程の視覚化に役立つ技術を紹介しています。

データの表示

データを緑丸で表示し、移動平均を赤線で描画します。この例では、移動平均の初期値として単純にnp.zeros(W)を使用し、すべての値を0に設定しています。

ipywidgetsの設定

num = IntSlider(min=1, max=10, step=1, value=3)を使用すると、初期値3で、1から10まで1刻みで値を変化させることができます。このnumを移動平均の幅として扱います。

kはkernelを表し、3の場合は[1/3, 1/3, 1/3]となります。

移動平均はnp.convolve関数で畳み込み計算することで得られます。mode引数を「same」に設定すると、元の配列と同じ長さの結果が返されます。

numを変化させたときのプロットの変化

ax.cla()を使う方法

ipywidgetsの関数内部でax.cla()を使用してグラフを消去したり再表示したりすることも可能です。

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

まとめ

ipywidgetsのIntSliderを使うことで、データの移動平均の窓サイズをインタラクティブに調整でき、データ分析の効率が大幅に向上します。この手法はデータのトレンドを視覚的に把握するのに非常に有効で、Jupyter Notebookの強力な機能を活かした実用的なデータ分析手法といえるでしょう。

参考

numpy.convolve — NumPy v1.18 Manual
Widget List — Jupyter Widgets 8.1.7 documentation

コメント