Анимация с использованием animation.FuncAnimation от matplotlib играет медленнее, чем ожидалось - PullRequest
0 голосов
/ 19 сентября 2018

Начиная с предыдущего вопроса , выяснилось, что фрагмент кода приводил к различным анимациям на моем ПК, как и к другому комментатору.С тех пор я переписал код, чтобы сделать его немного проще, как было предложено:

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()

Проблема, как показано в другом потоке, заключается в том, что с интервалом (обратите внимание, что аргумент интервалав миллисекундах, следовательно, коэффициент разности 1000) в FuncAnimation такой же, как шаг по времени dt, анимация должна запускаться в режиме «реального времени», т.е. средство отслеживания времени в верхнем левом углу рисунка должно работать с той же скоростью, что инормальные часы.Хотя это, казалось, имело место для другого комментатора, это было не так на моем собственном ПК.Я надеюсь, что кто-то еще может воспроизвести проблему, поэтому я могу указать правильное направление.

Понятия не имею, что имеет значение, но я запускаю этот код на Python 3.7, Idle 3.6.6 на компьютере с Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...