[matplotlib 3D] 26. 3D wireframe plotでanimation

matplotlib 3D

はじめに

matplotlib mplot3dの3D wireframe plotをArtistAnimationを使って、アニメーションで表示する方法について解説する。

コード(matplotlib example)

このコードをjupyter notebookで実行した結果、

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

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

%matplotlib notebook

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

そこで、ArtistAnimationを使って書き改めた。[1]

コード(ArtistAnimation)

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

解説

モジュールのインポート

データ生成とデータ生成関数

関数generateはZデータ出力用の関数となる。

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

imsで空のリストを作成する。
phiの0個目から100個目まで順次 Zのdataを作成して、wireframeでプロット(im)を作成し、
imsにimをappendで追加していく。
ここで[im]と[]で囲むのがポイントとなる。[2]
最終的にimsはグラフのリストとなる。

アニメーションの表示

ArtistAnimationでアニメーションを作成する。
figはアニメーションを表示するfigであり、imsはグラフのリストであり、interval では図の表示時間[ms]を設定する[3]

アニメーションをIPythonの HTML displayで表示する。to_html5_videoでアニメーションをHTML5 に変換できる [4]

下の図のように表示されるので、・・・と縦に並んでいるところをクリックすれば簡単にダウンロードできる。

参考

  1. matplotlib.animation.ArtistAnimation
  2. matplotlib でアニメーションを作る – Qiita
  3. matplotlibで簡単にアニメーションをつくる(mp4, gif) – Qiita
  4. Embedding Matplotlib Animations in Jupyter as Interactive JavaScript Widgets

コメント