[matplotlib Animation] 7. 双曲面の拡張アニメーション

matplotlib 3D

はじめに

matplotlib FuncAnimationによる双曲面の拡張アニメーションについて解説する。

コード

解説

モジュールのインポート

軸と軸ラベルの設定

データの生成

双曲面は媒介変数でデータを生成するので、uとvを先に作成してmeshgridする。
双曲面は媒介変数で以下のようになる。

$$X = cosh(u)*cos(v)\\ Y = cosh(u)*sin(v)\\ Z = sinh(u)$$

ここで、a,bをnp.linspace(0,1,100)として、0〜1まで100stepで変化させていく。

アニメーションの設定

plotに最初に表示するグラフをプロットしておく。[]で囲んでリストにしておく。

アニメーションでは古いプロットを消す必要がある。
3Dグラフの場合、plot[0].remove()で消すことができる。
X,Yにa,bの値を順次いれていき、双曲面データを生成する。
plot[0]に3Dグラフをプロットしていく。

アニメーションの表示

FuncAnimationでanimationの表示。updateのnumを100としているので、frame数は100とする。interval=100なので、100msごとに次のグラフと切り替わっていくので100 frames×100 ms = 10000 ms = 10秒のアニメーションとなる。
to_html5_videoでHTMLビデオとしてjupyter notebook上に表示する。

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

参考

双曲線関数 - Wikipedia

 

コメント