[matplotlib animation] 65. 2次元ランダムウォークアニメーション

matplotlib Animation

はじめに

matplotlibのFuncAnimationで2次元のランダムウォークアニメーションを表示する。

コード

解説

モジュールのインポート

データの生成

np.random.randomはランダムな0〜1の要素を得ることができるので、thetaは2.0*np.pi*np.random.random(499)と2πをかけているので、0〜2πとなる。

x,yはそれぞれthitaを媒介変数としてcosとsinで作成する。
np.hstack((0,np.cos(theta)))とすることによりスタート地点を(0,0)としている。
positionは下記の1Dランダムウォークの例と同様にnp.cumsum()により、累積和とすることで順次変化するランダムウォークの位置を取得した。

[matplotlib animation] 64. 1次元ランダムウォークアニメーション
matplotlibのFuncAnimationで1次元のランダムウォークアニメーションを表示する。

2次元のランダムウォークデータの表示

上記で作成したデータを表示すると以下のようになる。

上の図のx軸、y軸の表示範囲をax.get_xlim(), ax.get_ylim()で取得する。

アニメーションの表示

p1,で空のプロットを作成して、データを流し込んでいく。
データのセットには、set_dataを用いる。
x軸, y軸の表示範囲は、ax.set(xlim=xlim, ylim=ylim)のようにして先程取得したものを用いる。

ani = animation.FuncAnimationとし、このaniをHTML(ani.to_html5_video())とすることでjupyter lab(notebookも)上でアニメーションを表示できる。

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

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

参考

[Pythonによる科学・技術計算] 2次元ランダムウォーク(酔歩問題), 数値計算 - Qiita
乱数を利用した2次元ランダムウォークのシミュレーションを行う。1ステップを1とし, 原点(0,0)からスタートして二次元平面上をランダムウォークする。import numpy as npfro…
numpy.random.choice — NumPy v1.15 Manual
numpy.cumsum — NumPy v2.2 Manual

コメント