[matplotlib animation] 110. Moving grid

matplotlib 3D

はじめに

matplotlibのFuncAnimationとmplot3dで球体の下と横のグリッドが動くアニメーションを表示する。

コード&解説

モジュールのインポートなど

バージョン

球面のデータの生成

球面のデータは下記記事と同様にnp.outerを使う方法で作成した。

[matplotlib 3D] 18. 3D surfaceプロットで球を表示
matplotlibのmplot3dをつかって、3Dグラフ上にsurface plotで球を表示する方法について解説する。

3D figureの作成

fig.add_subplot(projection=’3d’)でfigにaxを作成する。

視点、軸ラベル、アスペクト比の設定

ax.view_initで視点の設定をして、ax.set_box_aspect((1,1,1))で1:1:1のアスペクト比の3Dグラフとし、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.5.2 documentation
matplotlib.animation.FuncAnimation — Matplotlib 3.5.2 documentation

コメント