[matplotlib animation] 110. 3Dプロット上で動くグリッドのアニメーション

matplotlib 3D

はじめに

この記事では、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のスタイルを使用すると以下のようになります。

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

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

参考

3D surface (colormap) — Matplotlib 3.10.5 documentation
matplotlib.animation.FuncAnimation — Matplotlib 3.10.5 documentation

コメント