はじめに
jupyter notebookの対話的にパラメータを調整できる機能(ipywidgets IntSlider)で、データの移動平均を対話的にプロットする方法について説明する。
コード

解説
モジュールのインポートなど
データの生成
データは1次元のランダムウォークを用いた。1Dランダムウォークについては下記で説明した。np.cumsum()は累積和となる。

[matplotlib animation] 64. 1次元ランダムウォークアニメーション
matplotlibのFuncAnimationで1次元のランダムウォークアニメーションを表示する。
データの表示
データを緑丸で示して、移動平均を赤線で表示する。ここで、移動平均は適当な値をプロットしておく。np.zeros(W)ですべて0とした。
ipywidgetsの設定
num = IntSlider(min=1, max=10,step=1,value=3)のようにすることで、初期値を3として1刻みで1から10まで値を変化させることができる。このnumを移動平均をとる幅として扱う。
kはkernelであり、3の場合[1/3,1/3,1/3]となる。
移動平均はnp.convolveで畳み込むことで得ることができる。modeをsameとすることで同じ長さの配列が返る。
numを変化させたときのプロットの変化


ax.cla()を使う方法
ipywidgetsの関数内部でax.cla()で消したり表示したりすることでもできる。
コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)参考
numpy.convolve — NumPy v1.18 Manual
Widget List — Jupyter Widgets 8.1.5 documentation
コメント