はじめに
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()により、累積和とすることで順次変化するランダムウォークの位置を取得した。
![](https://sabopy.com/wp/wp-content/uploads/2019/12/1Drandomwalk-1-160x90.jpg)
[matplotlib animation] 64. 1次元ランダムウォークアニメーション
matplotlibのFuncAnimationで1次元のランダムウォークアニメーションを表示する。
2次元のランダムウォークデータの表示
上記で作成したデータを表示すると以下のようになる。
![](https://sabopy.com/wp/wp-content/uploads/2019/12/2Drandomwalk-1.jpg)
上の図の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ファイル)参考
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9JTVCUHl0aG9uJUUzJTgxJUFCJUUzJTgyJTg4JUUzJTgyJThCJUU3JUE3JTkxJUU1JUFEJUE2JUUzJTgzJUJCJUU2JThBJTgwJUU4JUExJTkzJUU4JUE4JTg4JUU3JUFFJTk3JTVEJTIwMiVFNiVBQyVBMSVFNSU4NSU4MyVFMyU4MyVBOSVFMyU4MyVCMyVFMyU4MyU4MCVFMyU4MyVBMCVFMyU4MiVBNiVFMyU4MiVBOSVFMyU4MyVCQyVFMyU4MiVBRiUyOCVFOSU4NSU5NCVFNiVBRCVBOSVFNSU5NSU4RiVFOSVBMSU4QyUyOSUyQyUyMCVFNiU5NSVCMCVFNSU4MCVBNCVFOCVBOCU4OCVFNyVBRSU5NyZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9MzQyYWNjNTZhNjUwZWY1ZjFiNDMwN2RhOTViZDY4OWI&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBzY2lfSGFydSZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9OTA2YzZjYTFjMDQwMGNkZDU5ZGQ4NzU5YzdkMzE3Njg&blend-x=142&blend-y=486&blend-mode=normal&s=729dc6e460ab1557a2b5040ddf6e3d72)
[Pythonによる科学・技術計算] 2次元ランダムウォーク(酔歩問題), 数値計算 - Qiita
乱数を利用した2次元ランダムウォークのシミュレーションを行う。1ステップを1とし, 原点(0,0)からスタートして二次元平面上をランダムウォークする。import numpy as npfro…
numpy.random.choice — NumPy v1.15 Manual
numpy.cumsum — NumPy v2.0 Manual
コメント