はじめに
matplotlibのFuncAnimationで1次元のランダムウォークアニメーションを表示する。
コード
解説
モジュールのインポート
データの生成
Wは動く回数であり、ここでは500とした。
stepはnp.random.choice([-1,1],W) により-1 か1を500回ランダムに選択した配列となる。
positionはnp.cumsum(step)により、累積和とすることで順次変化するランダムウォークの位置となる。
1次元のランダムウォークデータの表示
上記で作成したデータを表示すると以下のようになる。
![](https://sabopy.com/wp/wp-content/uploads/2019/12/1Drandomwalk-1.jpg)
アニメーションの表示
p1,で空のプロットを作成して、データを流し込んでいく。
データのセットには、set_dataを用いる。
データの更新に伴ってx軸の表示範囲も変化させる。ax.set_xlim(0,x[i+1])とすることでx軸の表示範囲を徐々に大きくできる。
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-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9TnVtcHklRTMlODElQUIlRTMlODIlODglRTMlODIlOEIlRTQlQjklQjElRTYlOTUlQjAlRTclOTQlOUYlRTYlODglOTAlRTMlODElQkUlRTMlODElQTglRTMlODIlODEmdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzFFMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZzPWYwMTU2NzU3MjY1NjM4NzFlMmMwOTNjMTEyM2U4OWFh&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDB5dWJhaXMmdHh0LWNvbG9yPSUyMzFFMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPWU0NWU1MmI3NWU1NGU4NjE4MzMzODBiZjJkMDgyNzU4&blend-x=142&blend-y=486&blend-mode=normal&s=3b672fbcea61e187909b8df7884e39dc)
Numpyによる乱数生成まとめ - Qiita
Python標準にも random というモジュールがあるが、ベクトル演算の可能な numpy のほうが「大量に乱数を生成してなんかの処理をする」という場合に高速に動く。あと分布関数が山ほど用意され…
numpy.random.choice — NumPy v1.15 Manual
numpy.cumsum — NumPy v2.0 Manual
コメント