はじめに
jupyter notebookでは対話的にパラメータを調整できる機能(ipywidgets)がある。ここでは、その機能の一つであるinteractを使って、Scipyのinterpolate interp1dによる補間でのデータ間隔を調整する方法について説明する。
コード
![](https://sabopy.com/wp/wp-content/uploads/2019/08/Screenshot-2019-07-31-at-22.28.06.png)
解説
モジュールのインポート
データの生成
np.linspace()により、0から20を21 等分した配列を生成する。
np.random.rand()により、0から1のランダムな要素をもち、要素数が21個の配列を生成する。
補間するための関数の生成
interp1d(x, y)のように補間関数を生成する。kind=cubicとした場合は、3次スプラインにより補間される。
図の表示
l, = ax.plot([], [], ‘c-‘, label=’Cubic’,zorder=1)にinteractで調整した補間データをいれるので、空のプロットを事前に作成しておく。
ipywidgetsの設定
np.linspace()の分割数を変化させる。大きくするほどデータ間隔が狭まる。
調整したデータxxで補間データf2(xx)を生成し、それをl.set_xdata(xx)とl.set_ydata(yy)でプロットに反映させる。
interact(f, x=(11,101))のようにすることでxを11から101の間で調整できる。
xを調整したときの図の変化
![](https://sabopy.com/wp/wp-content/uploads/2019/08/Screenshot-2019-07-31-at-22.28.56.png)
![](https://sabopy.com/wp/wp-content/uploads/2019/08/Screenshot-2019-07-31-at-22.28.24.png)
データ数が多いほど補間曲線がスムーズになっていることがわかる。
コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)参考
interp1d — SciPy v1.14.0 Manual
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Fadvent-calendar-ogp-background-7940cd1c8db80a7ec40711d90f43539e.jpg?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9aXB5d2lkZ2V0cyVFMyU4MSVBOEJva2VoJUU0JUJEJUJGJUUzJTgxJUEzJUUzJTgxJUE2JUUzJTgyJUE0JUUzJTgzJUIzJUUzJTgyJUJGJUUzJTgzJUE5JUUzJTgyJUFGJUUzJTgzJTg2JUUzJTgyJUEzJUUzJTgzJTk2JUUzJTgxJUFBJUU1JThGJUFGJUU4JUE2JTk2JUU1JThDJTk2JUUzJTgyJTkyJUUzJTgxJTk5JUUzJTgyJThCJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMzQTNDM0MmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmcz04MWI1OWE0Y2E3YmUwZTc4ZDAxZmE4M2MzZjI5MTkyMA&mark-x=120&mark-y=96&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9OTcyJnR4dD0lNDBkcmlsbGVyJnR4dC1jb2xvcj0lMjMzQTNDM0MmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1hN2VmNGMzZGUzMTBhMjEwZWQyMTg2OGFiNjUzZmZhNw&blend-x=120&blend-y=500&blend-mode=normal&s=90a8a416dca0825b985cf5db9b1c6872)
ipywidgetsとBokeh使ってインタラクティブな可視化をする - Qiita
なぜ対話型なのか何らかのパラメータが入ったグラフを出力したい場合、パラメータを変化させる度に確認する方法としては下記のような方法が考えられます。出力関数の引数を都度入力してグラフを出力変化させ…
コメント