使用animation.matplotlib中的FuncAnimation播放的动画比预期的慢

时间:2018-09-19 18:39:06

标签: python python-3.x animation matplotlib time

an earlier question中得知,一段代码导致了我PC上不同的动画,而这导致了另一个评论者。从那以后,我重新编写了代码,使其变得更简单,如建议的那样:

from numpy import sin, cos
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

# create a time array from 0..100 sampled at 0.05 second steps
dt = 0.025
t = np.arange(0.0, 20, dt)

length =  len(t)

def listmaker(n):
    return [0]*n

th1 = listmaker(length)
th2 = listmaker(length)

#dummy data
for i in range(0,length):
    th1[i] = 0.01*i
    th2[i] = 0.05*i

x1 = sin(th1)
y1 = -cos(th1)

x2 = sin(th2) + x1
y2 = -cos(th2) + y1

fig = plt.figure()
ax = fig.add_subplot(111, autoscale_on=False, xlim=(-2, 2), ylim=(-2, 2))
ax.grid()

line, = ax.plot([], [], 'o-', lw=2)
time_template = 'time = %.1fs'
time_text = ax.text(0.05, 0.9, '', transform=ax.transAxes)


def init():
    line.set_data([], [])
    time_text.set_text('')
    return line, time_text


def animate(i):
    thisx = [0, x1[i], x2[i]]
    thisy = [0, y1[i], y2[i]]

    line.set_data(thisx, thisy)
    time_text.set_text(time_template % (i*dt))
    return line, time_text

ani = animation.FuncAnimation(fig, animate, np.arange(1, length),
                              interval=25, blit=True, init_func=init)

# ani.save('double_pendulum.mp4', fps=15)
plt.show()

问题在另一个线程中显示,因为FuncAnimation中的间隔(注意interval参数以毫秒为单位,因此相差1000倍)与时间步长dt相同,因此动画应以“实时”运行,即,图左上方的时间跟踪器应以与正常时钟相同的速度运行。尽管其他评论者似乎是这种情况,但在我自己的PC上却不是这种情况。我希望其他人也能够重现此问题,因此可以指出正确的方向。

我不知道有什么意义,但是我正在Windows机器上的Python 3.7(空闲3.6.6)上运行此代码。

0 个答案:

没有答案