はじめに
この記事では、matplotlibとmplot3dを使用して、3D空間に表示された球体の下と横に動くグリッドを含むアニメーションの作成方法を解説しています。FuncAnimationを活用した動的なデータ可視化テクニックを学ぶことができます。科学的なデータの視覚的表現に役立つPythonコードの実装例を紹介しています。
コード&解説
モジュールのインポートなど
バージョン
球面のデータの生成
球面のデータは、下記記事と同様にnp.outer関数を使用して作成しました。

[matplotlib 3D] 18. 3D surfaceプロットで球を表示
matplotlibのmplot3dを使用して3Dグラフ上にsurface plotで球体を表示する方法を解説します。球の方程式からメッシュグリッドを作成し、3次元空間に美しく球体を描画する手順を紹介します。
3D figureの作成
fig.add_subplot(projection=’3d’)でfigにaxを作成します。
視点、軸ラベル、アスペクト比の設定
ax.view_initを使って視点を設定し、ax.set_box_aspect((1,1,1))で3Dグラフのアスペクト比を1:1:1にします。また、ax.set_xticklabels([])などを使用して軸のラベルを非表示にしています。
最初の図を表示
ax.plot_surface()でx,y,zデータをsurface plotで表示します。
アニメーションの設定
p1[0].remove()で既存の図形を消去し、p1[0]= ax.plot_surface()でxデータを少しずつ移動させながら再描画することでアニメーション効果を生み出します。
アニメーションの表示
animation.FuncAnimation()で100 frames, 表示間隔 60 msで表示すると以下のようになります。
移動速度を増加させた場合
animation.FuncAnimation()で100 frames, 表示間隔 30 msで表示すると以下のようになります。
スタイルをggplotにした場合
ggplotのスタイルを使用すると以下のようになります。
参考
3D surface (colormap) — Matplotlib 3.10.5 documentation
matplotlib.animation.FuncAnimation — Matplotlib 3.10.5 documentation
コメント