はじめに
matplotlib FuncAnimationによる軸範囲更新アニメーションについて解説する。
コード
解説
モジュールのインポート
軸と軸ラベルの設定
視点を変える設定は、ax.view_init(elev=15, azim=-60)。
elevはElevation viewing angle の略で、視点の高さの設定。(default=30)
azimはAzimuthal viewing angleの略で、方位角の設定。(default=-60)[1]
データの生成
双曲面は媒介変数でデータを生成するので、uとvを先に作成してmeshgridする。
双曲面は媒介変数で以下のようになる。
ここで、cをnp.linspace(0,10,100)として、0〜10まで100stepで変化させていく。
アニメーションの設定
plotに最初に表示するグラフをプロットしておく。[]で囲んでリストにしておく。
アニメーションでは古いプロットを消す必要がある。
3Dグラフの場合、plot[0].remove()で消すことができる。
Zのcのところをc[num]にして、Zを順次大きくしていく。
zmin, zmax = ax.get_zlim()で、今plotしている図のz軸の範囲を得る。
zminは初期設定で-10にしてある。
Z[0,0]には、zの最も小さい値が入っているので、この値がzminを下回ったとき、
ax.set_zlim(2*zmin, 2*zmax)で軸範囲を2倍にしていく。
そして、plot[0]に3Dグラフをプロットする。
アニメーションの表示
FuncAnimationでanimationの表示。updateのnumを100としているので、frame数は100とする。interval=100なので、100 frames×100 ms = 10000 ms = 10秒のアニメーションとなる。
to_html5_videoでHTMLビデオ化。
参考
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9TWF0cGxvdGxpYiUyMCUzRSUyMHZpZXdfaW5pdCUyOGVsZXYlM0ROb25lJTJDJTIwYXppbSUzRE5vbmUlMjklRTMlODElQUUlRTMlODMlODclRTMlODMlOTUlRTMlODIlQTklRTMlODMlQUIlRTMlODMlODglRTUlODAlQTQlMjAlM0UlMjBlbGV2JTIwJTNEJTIwMzAlMkMlMjBhemltJTIwJTNEJTIwLTYwJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmcz0zZmRiYTg5NmI3NDFjOWM2YTg0ODI0OWIwZWJlNmNhYg&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDA3b2Y5JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0xZTA5Yzg5MmE1OTkxM2RhNDZlNzI0OTRmYjA4ZTEyOQ&blend-x=142&blend-y=486&blend-mode=normal&s=01d9e617203ce3b8c31c30286fe6ddfe)
![](https://sabopy.com/wp/wp-content/uploads/2018/11/Screenshot-2019-11-06-at-12.46.10-160x90.jpg)
コメント