数値流体解析のためのアニメーション#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ミリ秒毎に表示する。※パラパラ漫画の原理と同じ
コメント
コメントを投稿