A documentação é um pouco leve na explicação de como usarFuncAnimation. No entanto, existem exemplos na galeria e blogtutoriais, como Jake Vanderplas's e PDF de Sam Dolan .
Este exemplo do tutorial de Jake Vanderplas talvez seja o "Hello World" da animação matplotlib:
from __future__ import division
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
def init():
return [line]
def animate(i, ax, line):
x = np.linspace(0, 2*np.pi, N) + i/(N*2)
ax.set_xlim(x.min(), x.max())
line.set_data(x, np.sin(x))
return [line]
N = 100
fig, ax = plt.subplots()
line, = ax.plot([], [])
ax.set_xlim(0, 2*np.pi)
ax.set_ylim(-1, 1)
ani = animation.FuncAnimation(
fig, animate, init_func=init, interval=0, frames=int(4*np.pi*N),
repeat=True, blit=True, fargs=[ax, line])
plt.show()
Altere vários valores ou linhas de código e veja o que acontece. Veja o que acontece se você alterar
return [line]
para outra coisa. Se você estudar e brincar com esses exemplos, poderá aprender como as peças se encaixam. Depois de entender este exemplo, você poderá modificá-lo para se adequar ao seu objetivo.
Se você tiver problemas, poste seu código e descreva qual mensagem de erro ou mau comportamento você vê.
Algumas dicas:
-
Como a animação requer chamarline.set_data
, eu não acho que você possa usar odf.plot()
do Pandas . Na verdade, não tenho certeza se o Pandas DataFrame é útil aqui. Você pode ser melhor sugando os dados em listas ou matrizes NumPy e passando-os paraline.set
como acima, sem envolver os Pandas.
-
A abertura de uma conexão com o banco de dados deve ser feita uma vez.animate
é chamado muitas vezes. Então é melhor definirconn
ec
equery
-- qualquer coisa que não mude com cada chamada paraanimate
--fora deanimate
, e passe-os de volta como argumentos paraanimate
viafargs
parâmetro.