matplotlib / pyplot / 一定時間ごとに何かを動かす FuncAnimation()

参考: Pythonからはじめる数学入門, p.163-165

from matplotlib import pyplot as plt
from matplotlib import animation
from math import sin

def createCircle():
    return plt.Circle((0,0), 1)

def movePos(i, circle): # i はフレーム番号。
    circle.center = (8*sin(i/10), 0)
    return circle

def animate():
    fig = plt.gcf()
    ax  = plt.axes(xlim=(-10,10), ylim=(-2,2))
    ax.set_aspect("equal")
    
    circle = createCircle()
    ax.add_patch(circle)
    
    sute = animation.FuncAnimation(fig ,
                                   movePos , 
                                   fargs=(circle,) , # フレーム番号以外に movePos() に渡す引数。カンマが入っているのはタプルにするため。リストでも動く。
                                   interval=1000/60 ,
                                   #frames=10 ,
                                   #repeat=False ,
                                   )
    plt.show()


animate()