はじめに
この記事では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
コメント