[python]色が変わっていく時計(アニメーション)


はじめに

1秒毎に回転し、60秒で1周する秒針(時計)を作成します。
ただ秒針を描くだけではつまらないので、時計の色が0~60[s]の範囲で、青色から赤色へ次第に変化するようにします。最後にgifとして保存して完成です。

pythonの、アニメーションを作成するライブラリを用います。

完成したアニメーション

コード

second_hand.py
%matplotlib nbagg

import matplotlib.pyplot as plt
import matplotlib.animation as animation
import matplotlib.patches as pat

fig = plt.figure()
ax = plt.subplot()

def clock(i):
    circle = [ax.add_patch(pat.Wedge(center=(0, 0), r=1, color=[0+i/60,0,1-i/60], theta1 = 95-i*(360/60), theta2 = 85-i*(360/60)))]
    #center:中心のxy座標,r:ウェッジの半径,color:RGBでの色指定(各色0~1),theta:ウェッジの角度を指定
    #circleをリストにすることに注意してください。あとでimgsに追加できるようにするためです。
    return circle

#リストimgsに、各秒ごとのclockを追加していきます。
imgs=[]
for i in range(60):
    imgs.append(clock(i))

ani = animation.ArtistAnimation(fig, imgs, interval=1000, repeat=True)
plt.axis("scaled")
plt.show()

ani.save("second_hand.gif", writer="imagemagick")#gifとして保存

環境

macOS Catalina
jupyter-notebook