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

matplotlib Animation

はじめに

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

コード

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

解説

モジュールのインポート

データの生成

Wは動く回数であり、ここでは500とした。
stepはnp.random.choice([-1,1],W) により-1 か1を500回ランダムに選択した配列となる。
positionはnp.cumsum(step)により、累積和とすることで順次変化するランダムウォークの位置となる。

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

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

アニメーションの表示

p1,で空のプロットを作成して、データを流し込んでいく。
データのセットには、set_dataを用いる。
データの更新に伴ってx軸の表示範囲も変化させる。ax.set_xlim(0,x[i+1])とすることでx軸の表示範囲を徐々に大きくできる。

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

参考

Numpyによる乱数生成まとめ - Qiita
Python標準にも random というモジュールがあるが、ベクトル演算の可能な numpy のほうが「大量に乱数を生成してなんかの処理をする」という場合に高速に動く。あと分布関数が山ほど用意されている。 一様乱数 numpy...
numpy.random.choice — NumPy v1.15 Manual
numpy.cumsum — NumPy v1.19 Manual

コメント