はじめに
この記事では、matplotlibのアニメーション機能を使って2次元平面上に順次マーカー(苗)を配置していく田植えのようなアニメーションを作成する方法について解説しています。散布図(scatter plot)を使用して、時間経過とともに苗(点)が田んぼ(平面)に植えられていく様子を視覚化しています。
コード
解説
モジュールのインポート
図の作成、軸の設定
データの生成
変数x,y,zは田全体を表し、xx,yy,zzは苗を植える具体的な場所を設定しています。
アニメーション開始前の図の設定
ax.plot_surface(x,y,z)で2次元平面を表示し、rstride, cstrideを9に設定することでグリッド線を非表示にしています。
ax.plot(xx.ravel()[:1], yy.ravel()[:1], zz.ravel()[:1]+0.01)で散布図をプロットします。マーカーを’1’に指定することで、Yの形状のポイントが表示されます。
アニメーションの設定
散布図を使用して、データポイントを順次プロットしていく仕組みです。
アニメーションの表示
FuncAnimationでアニメーションを表示します。updateを48ステップ実行してアニメーションを生成します。intervalは105msに設定されているため、アニメーションの長さは約5秒になります。
HTML(ani.to_html5_video())を使用することで、Jupyter Notebook上にアニメーションを表示できます。
コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)まとめ
matplotlibのアニメーション機能と散布図を組み合わせることで、データの時間変化を視覚的に表現することができます。この例では田植えをモチーフにしていますが、同様の手法で様々な現象の時間発展をアニメーション化することが可能です。
参考
matplotlib.animation.FuncAnimation — Matplotlib 3.10.6 documentation
コメント