как анимировать matplotlib, не сохраняя каждый отдельный кадр, но вычисляя следующий кадр, основываясь на том, как он отличается от предыдущего - PullRequest
0 голосов
/ 03 июня 2019

У меня есть массив целочисленных значений 2000x2000, равный +1 или -1.Этот массив имеет некоторую вероятность того, что одно из его значений координат изменится с коэффициентом -1 с каждым шагом по времени.Я уже запустил это моделирование и сохранил результаты в виде списка координат, которые равны (x_i, y_i), если изменение произошло при некотором x_i y_i, или равны пустому кортежу (), если изменение не произошло виндекс времени я.

Я пытаюсь анимировать, как массив изменяется со временем.Поскольку это большое изображение с миллионами временных шагов, я должен эффективно его анимировать.

пусть дельты будут списком координат, а состояние - массивом 2000x2000 с -1 или +1 целым числом.Я попытался анимировать это из следующего кода, приведенного ниже, но мой код на python завершается, прежде чем он может завершиться, вероятно потому, что он потребляет слишком много энергии.

fig = plt.figure()
ims = []
for coor in deltas:
     if coor == ():
         # No change, just plot the image
         im = plt.imshow(init_state, animated=True)
     else:
         # Change occurred at coor. Multiply by -1 and plot
         init_state[coor] *= -1
         im = plt.imshow(init_state, animated=True)
     ims.append([im])
# Function is killed before it finishes looping
ani = animation.ArtistAnimation(fig, ims, interval=50, blit=True,
                                repeat_delay=1000)

Единственное сообщение на моем терминале -

"Killed"

до завершения цикла for.

Есть ли способ создать анимацию, просто описав, как базовое изображение изменяется во времени, без необходимости предварительно вычислять и сохранятьсначала каждый отдельный кадр?

Любая помощь очень ценится.

...