はじめに
この記事では、Pythonのmatplotlibライブラリを使って3次元空間内の球体モデルをZ軸周りに回転させるアニメーションを作成する方法を説明します。
コード
解説
下記では、視点を回転させるアニメーションを作成しました。今回は、プロット自体を軸に対して回転するアニメーションを作成しました。

モジュールのインポート
3Dグラフにする設定
プロットするデータの生成
u, v は極座標でいうθとφとなります。極座標で球は以下の式で表せられます。
$$x=rcos\theta sin\phi, y=rsin\theta sin\phi, z=rcos\phi$$プロットできるようにするために、meshgrid状のデータを作成します。
np.outer()は外積で、2つのデータの要素の全てを掛け合わせます。
np.size()は要素を返してくれるのでnp.size(u)は100となります。
np.ones(np.size(u))はnp.ones(100)となるので1が100個のデータができることになります。
軸の範囲、ラベルの設定
ax.set_aspect(‘equal’)は3dグラフでは使えません。
3D surfaceグラフの作成
plotは[]で囲んでリストにする必要があります。
アニメーションで表示するグラフの設定
このanimationは、plot[0]を随時更新していくことでアニメーションとします。
よって、最初に前のグラフをremove()で取り除きます。
そして、回転したデータを生成します。回転角をγとすると、Z軸周りに角度γ回転したときの式は、
となります。
アニメーションの設定
FuncAnimationを使用してアニメーションを作成します。 figにupdateのanimationを描画し、フレーム数を100に設定します。intervalは100 msなので、全体で10秒の動画になります。fargsはupdate関数に渡す引数で、x、y、z、uおよびplotを指定する必要があります。
また、HTMLの.to_html5_video()メソッドを使用すると、アニメーションをHTML5形式で表示できます。
コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)参考


コメント
[…] [matplotlib animation] 3.球のz軸回転アニメーションmatplotlibのmplot3dで作成した球のsurface plotをZ軸に対して回転させたアニメーションについて解説します。sabopy.com2018.11.19 […]