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

matplotlib Animation

はじめに

この記事では、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()で累積和を計算することで、ランダムウォークの位置が順次変化する様子を取得しています。

[matplotlib animation] 64. 1次元ランダムウォークアニメーション
PythonのMatplotlibライブラリを使用して1次元ランダムウォークのアニメーションを作成する方法を解説。FuncAnimationクラスの活用法から実装まで、確率過程の視覚化に役立つ技術を紹介しています。

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次元ランダムウォークのアニメーションを作成できます。このような視覚化は、確率過程の理解や教育目的、またはデータ可視化のテクニックとして役立ちます。

参考

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

コメント