はじめに
この記事では、matplotlibのFuncAnimationを使用して2次元のランダムウォークアニメーションを作成する方法について説明します。ランダムウォークとは、各ステップがランダムな方向に進む確率過程のことであり、ここでは視覚的に表現します。
コード
解説
モジュールのインポート
データの生成
np.random.randomは0〜1の範囲でランダムな値を生成できるため、thetaは2.0np.pinp.random.random(499)と計算することで0〜2πの範囲の値となります。
x,yはそれぞれthetaを媒介変数としてcosとsin関数で作成します。 np.hstack((0,np.cos(theta)))と記述することでスタート地点を(0,0)に設定しています。 positionは後述する1Dランダムウォークの例と同様に、np.cumsum()で累積和を計算することで、ランダムウォークの位置が順次変化する様子を取得しています。

2次元のランダムウォークデータの表示
上記で作成したデータを表示すると以下のようになります。

上の図のx軸、y軸の表示範囲をax.get_xlim(), ax.get_ylim()で取得します。
アニメーションの表示
p1で空のプロットを作成し、そこにデータを流し込みます。 データの設定には、set_data関数を使用します。 x軸とy軸の表示範囲は、ax.set(xlim=xlim, ylim=ylim)のように、先ほど取得した値を使って設定します。
animation.FuncAnimationでアニメーションオブジェクト(ani)を作成し、このaniをHTML形式(ani.to_html5_video())に変換することで、Jupyter Lab(またはJupyter Notebook)上でアニメーションを表示できます。
コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)まとめ
matplotlibのFuncAnimationを使えば、簡単に2次元ランダムウォークのアニメーションを作成できます。このような視覚化は、確率過程の理解や教育目的、またはデータ可視化のテクニックとして役立ちます。
参考

コメント