[matplotlib animation] 62. グラフ上にアニメーションの軌跡としてマーカーの残像を表示

matplotlib Animation

はじめに

グラフ上をマーカーが移動するアニメーションでその軌跡としてマーカーの残像を表示する方法について解説する。

コード

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

解説

モジュールのインポート

データの生成

データは下記記事と同じで、らせんのデータを用いる。外から内に表示させるために[::-1]でデータを逆順に変換している。

[matplotlib] 45. fillでプロットの内側を塗りつぶして表示
matplotlibのfillでプロットの内側を塗りつぶす方法について説明する。

データをアスペクト比を揃えてプロットし軸範囲を取得

らせんデータをax.axis(‘equal’)でプロットし、グラフを表示させる。表示させたグラフから、ax.get_xlimなどで軸範囲の情報を抜き出す。この軸範囲の情報は後ほどアニメーション表示させるグラフに用いる。

figの作成と空データのプロット

3Dグラフを作成して空のデータのプロットを5つプロットしておく。このプロットにデータを流し込むことでアニメーション表示させる。
さきほど取得した軸範囲をax.set(xlim=x_lim, ylim=y_lim)でアニメーション表示させるグラフに適用する。

アニメーションの初期設定

returnでアニメーション表示するplotを返しておく。

アニメーションの設定

先頭のプロットから最後のプロットにかけて透明度を変化させて、流れるようなアニメーションを作成する。x,yの位置の設定はset_dataで行い、透明度の設定はset_alphaにより行う。こちらもreturnでアニメーション表示するplotを返す必要がある。

アニメーションの表示

FuncAnimation でアニメーションを表示する。
96はupdate(i)のアニメーション関数を0 〜95まで実行する意味となる。intervalはupdate関数の実行間隔であるため、100 msごとにプロットが変化していくアニメーションが得られる。HTML(ani.to_html5_video())とすればjupyter notebook上にアニメーションを表示できる。
ファイルの保存はani.save(‘kisekianim2d.mp4’, writer=”ffmpeg”,dpi=100)のようにすることで MP4ファイルを保存することができる。

参考

[matplotlib] 45. fillでプロットの内側を塗りつぶして表示
matplotlibのfillでプロットの内側を塗りつぶす方法について説明する。
matplotlib.axes.Axes.set_alpha — Matplotlib 3.1.1 documentation

コメント