今度は2次元での線分のアニメ作りです。レッスン6の「点のアニメ」とほとんど同じ内容ですが、連続静止画を作るために ‘for’ 文を利用しています。
# python-3D-graphics-step-by-step-7.py 08/04/2023 by Kero
# (7) show line animation on 2D
# preparation
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
# graph area settings
fig = plt.figure()
ax = fig.add_subplot(111)
cuts = []
# make cuts
for i in range(5): # iは0から4まで。以下インデント部分を実行。
cut = ax.plot([0, 1],[0, i]) # (0,0)と(0,i)を結ぶ線分。
# 'plot'描画はリストオブジェクトなので、[ ]で括らなくて良い。
cuts.append(cut) # それをcutsに追加。
# make animation
anime = animation.ArtistAnimation(fig,cuts, interval=1000) # 1000ミリ秒停止。
anime.save('python-3D-graphics-step-by-step-7.gif', writer='pillow')
# show figure
plt.show()
レッスン6 と異なる ‘make cuts’ を説明します。
‘for’ 文では、i をゼロから4まで(値は5つ)カウントアップしています。
‘cut’ には、レッスン6での ‘plt.scatter’ に替わり ‘ax.plot’ が入っています。’plt’ はMATLAB (マトラボ)という数値解析ソフト&プログラミング言語に親和性のある「やり方で」という意味だそうです。今回は 「’ax’ というガクブチ・オブジェクトで使う道具 」という意味で。’ax.plot’ としています。plot のカッコの中の [0, 1] は2つの点の x 座標、[0, i] は2つの点の y 座標であり、2つの点は夫々(0, 0)と (1, i) です。
i は「 for の行」に続く「段下げ」段落が実行されるたびに、1つずつ0 から 4 まで増えます。
plot によって作られる線分はそのままで「リストオブジェクト」なので、 ‘scatter’ のときのように ‘[ ]’ で挟む必要がありません。
後はレッスン6と同様です。
ArtistAnimation でアニメを作ると、デフォルトでは描画は無限に繰り返されます。’interval’ と同様にカッコの中に “repeat=’False'” を追記すると、1回だけの実行になります。