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

matplotlib Animation

はじめに

この記事はmatplotlibを使ってグラフ上にアニメーションの軌跡としてマーカーの残像を表示する方法について解説します。matplotlib.animationモジュールを利用し、マーカーの移動に伴いその軌跡を残すことで、動きの履歴を視覚的に表現する技術を紹介します。

コード

解説

モジュールのインポート

データの生成

データは下記記事と同様、らせん状のデータを使用しています。表示を外側から内側へ行うため、[::-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関数で調整します。このアニメーションを表示するには、関数内でplotオブジェクトをreturnする必要があります。

アニメーションの表示

FuncAnimationを使用してアニメーションを表示します。引数の96は、update(i)アニメーション関数が0~95まで実行されることを意味します。intervalパラメータはupdate関数の実行間隔を指定するため、100ミリ秒ごとにプロットが更新されるアニメーションが生成されます。Jupyter Notebook上でアニメーションを表示するには、HTML(ani.to_html5_video())を実行します。

アニメーションをファイルとして保存するには、ani.save(‘kisekianim2d.mp4’, writer=”ffmpeg”, dpi=100)のように指定することでMP4形式で保存できます。

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

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

まとめ

matplotlibのアニメーション機能を使って、グラフ上を移動するマーカーの軌跡を残像として表示する方法を学びました。これにより、データの時間的変化や軌道をより視覚的に理解することができます。残像の表示方法や色の変更、フェードアウト効果など、様々なカスタマイズも可能です。

参考

[matplotlib] 45. fillでプロットの内側を塗りつぶして表示
matplotlibのfill関数を使ってプロットの内側を塗りつぶす方法を解説。複数の色での塗りつぶし、透明度の設定、領域の強調表示など、データの視覚化をより効果的に行うためのテクニックを紹介します。
matplotlib.axes.Axes.set_alpha — Matplotlib 3.2.2 documentation

コメント