数値流体解析のためのアニメーション#1

 #1はPythonを用いたアニメーションの基礎をお勉強します。


Pythonでアニメーションを実装する方法の一つに、

「matplotlib.animation」モジュールの「ArtistAnimation」メソッドを

用いる方法がある。

以下に、$sin$カーブのアニメーションのソースコードを示す。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

fig = plt.figure()
x = np.arange(0, 10, 0.1)
ims = []

for a in range(50):
...     y = np.sin(x - a)
...     im = plt.plot(x,y, "r")
...     ims.append(im)


ani = animation.ArtistAnimation(fig, ims)

plt.show()

ani.save("hoge.gif")








〇ソースコードの解説

*fig = plt.figure():figureオブジェクトを生成し引数figと命名

figureオブジェクトの概念は以下















*ims = []:空のリストを生成し引数imsを命名
*im = plt.plot(x, y, "r"):座標(x,y)の値を赤色("r")でプロットする。
ただし、xはx=[0,0.1,0.2,...,9.9]。
aは、0~49の整数が入り、for文で回す。
よって、a=5の場合、y=[sin(0-5),sin(0.1-5),sin(0.2-5),...,sin(9.9-5)]と
なり、一つのaに対し、100個の座標(x,y)ができる。
これをプロットし引数imに渡す。
*ims.append(im):リストimsに要素imを追加する。
forを回した結果、50行100列のリストimsができる。
*ani.save("hoge.gif"):アニメーションをgifファイルで保存する。
出力はカレントディレクトリ。

**ani = animation.ArtistAnimation(fig, ims):
プロットデータ(imsの各要素)をfigureオブジェクトに格納した
各フレームを200ミリ秒毎に表示する。※パラパラ漫画の原理と同じ

コメント

人気の投稿