Dokumentationen är lite lätt för förklaringar av hur man använder FuncAnimation. Det finns dock exempel i galleriet och bloggtutorials, som Jake Vanderplas's och Sam Dolans PDF .
Det här exemplet från Jake Vanderplas handledning är kanske "Hello World" av matplotlib-animationen:
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()
Ändra olika värden eller kodrader och se vad som händer. Se vad som händer om du ändrar return [line]
till något annat. Om du studerar och leker med dessa exempel kan du lära dig hur bitarna passar ihop.
När du förstår det här exemplet bör du kunna modifiera det så att det passar ditt mål.
Om du har problem, posta din kod och beskriv vilket felmeddelande eller felbeteende du ser.
Några tips:
-
Eftersom animering kräver att
line.set_data
anropas , jag tror inte att du kan använda Pandasdf.plot()
. Jag är faktiskt inte säker på om Pandas DataFrame är användbar här. Du kanske är bättre att suga in data i listor eller NumPy-matriser och skicka dem tillline.set
som ovan, utan att involvera Pandas. -
Att öppna en anslutning till databasen bör göras en gång.
animate
blir uppringd många gånger. Så det är bättre att definieraconn
ochc
ochquery
-- allt som inte ändras med varje anrop tillanimate
--utanföranimate
, och skicka tillbaka dem som argument tillanimate
viafargs
parameter.