Matplotlib动画第一次运行时更快

时间:2014-02-17 15:23:33

标签: python animation matplotlib

我在Tkinter中嵌入了Matplotlib动画,并且为了控制绘图的某些方面(例如绘图限制),我有一些方法可以停止动画,进行所请求的更改并重新启动它。我注意到每次停止并重新运行动画时它都比第一次慢(但速度不会慢一点)。

从IPython会话运行时,我观察到更简单的动画(下面的代码):

第一次跑:

In [279]: run test
145.5 FPS    0 frames
104.0 FPS   25 frames
174.8 FPS   50 frames
184.1 FPS   75 frames
180.4 FPS  100 frames
184.1 FPS  125 frames

第二次运行:

In [280]: run test

In [281]: 
123.7 FPS   0 frames
38.0 FPS   25 frames
37.8 FPS   50 frames
38.1 FPS   75 frames
38.1 FPS  100 frames
37.5 FPS  125 frames

这是使用的动画代码:

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

def setFig():
    fig = plt.figure(1)
    fig.clear()
    ax = fig.add_subplot(111)
    ax.set_xlim(0, 100)
    ax.set_ylim(0, 1)
    line = ax.plot([], [])
    return fig, ax, line

def init():
    line[0].set_data([], [])
    return line

def animate(i):
    line[0].set_data(range(100), np.random.random(100))
    if i % 25 == 0:
        global t_old
        t_new = time.time()
        print('{:5.1f} FPS{:>5d} frames'.format(25 / (t_new - t_old), i))
        t_old = t_new
    return line

if __name__ == '__main__':
    t_old = time.time()
    fig, ax, line = setFig()
    anim = animation.FuncAnimation(fig, animate, init_func=init, 
                                blit=True, interval=1, frames=150,
                                repeat=False)
    plt.show()

请注意,我将动画间隔设置为1毫秒。如果我将其设置为零,则不会观察到此行为,并且所有后续运行都表现良好,如果我在第二次运行之前关闭该图,则会发生同样的情况。为什么会发生这种情况?如何确保后续动画的运行速度与第一个一样快?

0 个答案:

没有答案