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

ipywidgets

はじめに

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.2 documentation

コメント