はじめに
matplotlib FuncAnimationによる、正規分布の平均と分散が変化するアニメーションについて解説する。
平均が移動するanimation
コード
解説
モジュールのインポート
軸と軸ラベル、グリッド
ax.grid()でグリッドを追加できる。
データの生成
平均\(\mu\)、分散\(\sigma^2\)の確率分布関数\(p(x)\)は、
$${p(x)=\frac{1}{\sqrt{2\pi}\sigma}\exp\left(-\frac{1}{2\sigma^2}(x-\mu)^{2}\right)}$$で与えられる。
norm.pdf(x,loc=0,scale=1)で,期待値(loc)=0,標準偏差(scale)=1の正規分布の確率密度関数のxでの値を取得する。
xがlinspaceで-10〜10まであるので、xとyで正規分布が描ける。
locを変化させるためのlocsはsin波の形で-5から5まで変化させる。
アニメーションの設定
まずグラフを入れるためのからのリストlinesを作成する。
アニメーションでは古いプロットを消す必要がある。すでにlinesにグラフが入っている場合は、lines.pop().remove()で消す。
loc=locs[num]でlocsの要素を順番に適用していく。
line,でプロットを作成して、linesに入れてゆく。
ax.set_titleでタイトルに平均値を表示。
アニメーションの表示
FuncAnimationでanimationの表示。fargs=(x,y,locs,lines)でupdate関数にいれる変数を指定しておく必要がある。
to_html5_videoでHTMLビデオ化。
分散が変化するアニメーション
コード
解説
データの生成
標準偏差(scales)を0.05〜5まで、sin波で変化させる。
アニメーションの設定
コメント