アニメーション表示する
昨日の続きで、アニメーション作成方法を検討する。
まず、連続的に画像ファイルを出力して後で動画ファイルにまとめる方法ではなく、画像を繰り返し再描画して動いているように見せる方法を見てみる。
matplotlibのexamplesの中のanim.pyを読む。主要部分だけを抽出すると以下の通り。
import pylab as p p.ion() x = p.arange(0, 2*p.pi, 0.01) line, = p.plot(x, p.sin(x)) for i in p.arange(1,200): line.set_ydata(p.sin(x+i/10.0)) p.draw()
順番に見ていくと、
- p.ion() --- interactiveモードをオンにする。interactiveモードがどのようなものか正直分からないのだが、これがないとグラフのウィンドウが表示されないことは分かった。
- p.arange(0, 2*p.pi, 0.01) --- 0から0.01刻みで2πまでリスト(?)を作る。2πは含まない。type()で型を調べたらnumpy.ndarray型だったので、リストとは違う?
- line, =p.plot(x, p.sin(x)) --- y=sin(x)をプロットする。"line, ="の部分がよくわからない。"line="にすると動かなくなる。コンマの意味が不明。以前もどこかでコンマで悩んだような。"print a,"のように書くときには改行しないprintだけど、この場合は改行とは無関係だろう。
- for i in p.arange(1,200): --- これは"for i in range(1,200)"と同じこと(たぶん)。
- line.set_ydata(p.sin(x+i/10.0)) --- "line,=p.plot(x, p.sin(x))"で定義したlineのyの値を変更している。
- p.draw() --- 図形の再描画。これがないと図が更新されない。
不明点は多いが、大体どう書くかはわかったので、実際やってみる。