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