はじめに
matplotlibのFuncAnimationでトーラス結び目の結び目が変化するアニメーションを表示する。
コード
解説
モジュールのインポート
figの作成
GridSpecで複数グラフを作成する。hspaceはグラフ間の縦方向の間隔で、wspaceは横方向の間隔となっている。
ax1, ax2, ax3のグラフをそれぞれ作成する。ここでは、異なる視点のグラフを作成するので、sharex, shareyを設定することで面倒な軸の設定をできるだけ省略する。
トーラス結び目の設定
[matplotlib 3D] 49.トーラス結び目(torus knot)
matplotlib mplot3dによるトーラス結び目
トーラス結び目は上を参考にした。
ここでは、小円方向の回転数(p)を変化させるアニメーションを作成するので、p_をlinspaceで作成しておく。
軸の設定
ax2,ax3のx軸、y軸にはax1の設定が反映される。
視点の設定
ax1は真上からみた図とし、ax2は真横からみた図とする。
はじめに表示する図の設定
アニメーションで表示するには、リストとしておく必要がある。
アニメーションの設定
アニメーションでは古いグラフを消して新しいグラフを表示するという動作を繰り返すので、.pop().remove()で現在表示されている図を消す。
ここでは、小円方向の回転数(p_)を変化させるアニメーションを作成する。
X,Y,Zデータを変化するp_で生成して、そのデータを順次プロットしていく。
アニメーションの表示
FuncAnimationでanimationの表示する。updateを101step実行してアニメーションとする。intervalは200 ms なので20秒のアニメーションとなる。
HTML(ani.to_html5_video())でjupyter notebook上にアニメーションを表示できる。
参考
matplotlib.animation.FuncAnimation — Matplotlib 3.9.2 documentation
コメント