はじめに
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ビデオ化。
コメント