はじめに
matplotlib FuncAnimationにより、変形する楕円体のアニメーションを表示する。
コード
コードをダウンロード(.pyファイル)
コードをダウンロード(.ipynbファイル)
解説
モジュールのインポート
バージョン
軸範囲と軸ラベルの設定
データの生成
楕円体は球と同様に、極座標系の媒介変数でデータを生成する。
θを0〜2π,φを0〜πとすると、以下のようになる。
ここでa,b,cは各x,y,z軸方向の径の半分の長さとなる。
ここでは、a=b=1, c=5と設定している。
アニメーションではa,bを変化させる。そのために、xr(a)とyr(b)をlinspaceで作成する。
xrは大きくして小さくする配列でyrは小さくして大きくする配列となっている。
それぞれlinspaceの配列をhstackで連結して作成した。
アニメーションの設定
まずアニメーションで動くグラフにするためにリスト内にplot_wireframeを作成する。
wireframeのrstride, cstrideはそれぞれrowとcolumnの表示間隔でデフォルト値は1となっている。ここでは4とした。
アニメーションでは古いプロットを消す必要があるので、
plotにグラフが入っている場合は、remove()で消す。
x,yにxr,yrの値を乗じて、x_,y_としてプロットを作成。
plot[0]にそれを入れる。
アニメーションの表示
FuncAnimationでanimationの表示。updateを100step実行してアニメーションとする。intervalは100 ms なので10秒のアニメーションとなる。
HTML(ani.to_html5_video())でjupyter notebook上にアニメーションを表示できる。
参考
楕円体 - Wikipedia
さくらのレンタルサーバ
コメント