[matplotlib 3D] 26. ArtistAnimationで3D wireframe plotをアニメーションで表示

matplotlib 3D

はじめに

3次元データの視覚化は、データ分析や科学研究において重要な役割を果たします。特に時間変化するデータセットを表現する場合、静的な画像では伝えきれない情報があります。MatplotlibのArtistAnimationを使用すると、3Dワイヤーフレームプロットに動きを加え、より直感的な理解を促進できます。

コード(matplotlib example)

Rotating 3D wireframe plot — Matplotlib 3.4.0 documentation

上記ページのコードをjupyter notebookで実行した結果、

%matplotlib nbagg
Warning: Cannot change to a different GUI toolkit: nbagg. Using notebook instead.

とのことでアニメーションが表示されなかった。

%matplotlib notebook

としてもアニメーションが表示されず、下の画像が表示された。

そこで、ArtistAnimationを活用して実装方法を改良しました。

コード&解説

モジュールのインポート

バージョン

データ生成関数

Zデータを生成する関数generateを以下のように定義します。

X, Y meshgridの作成

X,Yデータをnp.meshgridで作成します。

plot_wireframeでプロット

関数generateのphiを0とした時のデータをplot_wireframeで表示すると以下のようになります。

アニメーション用グラフの作成

まず、imsという空のリストを作成します。

次に、phiの0個目から50個目まで順にZのデータを生成し、wireframe関数でプロット(im)を作成します。

作成したimをimsリストに追加していきます。

このとき、imを[im]のように角括弧で囲むことがポイントです。

最終的に、imsはplot_wireframeオブジェクトのリストとなります。

アニメーションの表示

ArtistAnimationを使用してアニメーションを作成します。 figはアニメーションを表示する図であり、imsはグラフのリストです。intervalパラメータでは図の表示時間(ミリ秒)を設定します。 アニメーションはIPythonのHTML displayで表示でき、to_html5_video関数を使用してHTML5形式に変換できます。

作成されるアニメーションは以下のようになります。

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

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

参考

matplotlib.animation.ArtistAnimation — Matplotlib 3.10.5 documentation
Redirecting...

コメント