FuncAnimation () не работает, если не назначена переменная - PullRequest
0 голосов
/ 07 июля 2019

У меня есть следующий фрагмент кода Python:

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

fig = plt.figure()
ax = fig.add_subplot(111)

x = np.arange(0, 2 * np.pi, 0.01)
line, = ax.plot(x, np.sin(x))


def animate(i):
    line.set_ydata(np.sin(x + i / 10))
    return line,
# note: no anim=animation.FuncAnimation(...) assignment
animation.FuncAnimation(fig, animate)
plt.show()

Он не работает так, как я ожидал - при запуске он отображает синусоидальный график на графике, но не обновляется. Это сложно, когда результат FuncAnimation () присваивается переменной. Почему это? Как объект Python может узнать, что он был назначен переменной?

1 Ответ

0 голосов
/ 08 июля 2019

Документация объясняет это:

[..] важно сохранить ссылку на объект экземпляра. Анимация продвигается таймером (обычно из инфраструктуры GUI хоста), на который объект Animation содержит единственную ссылку. Если вы не удерживаете ссылку на объект Animation, он (и, следовательно, таймеры) будет собирать мусор, что остановит анимацию.

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