Dokumentationen er lidt let på forklaring af, hvordan man bruger FuncAnimation. Der er dog eksempler i galleriet og blogtutorials, såsom Jake Vanderplas's og Sam Dolans PDF .
Dette eksempel fra Jake Vanderplas's tutorial er måske "Hello World" af 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()
Skift forskellige værdier eller kodelinjer og se, hvad der sker. Se, hvad der sker, hvis du ændrer return [line]
til noget andet. Hvis du studerer og leger med disse eksempler, kan du lære, hvordan brikkerne passer sammen.
Når du forstår dette eksempel, bør du være i stand til at ændre det, så det passer til dit mål.
Hvis du har problemer, så send din kode og beskriv hvilken fejlmeddelelse eller forkert opførsel du ser.
Nogle tips:
-
Da animation kræver opkald til
line.set_data
, jeg tror ikke, du kan bruge Pandas'df.plot()
. Faktisk er jeg ikke sikker på, om Pandas DataFrame er nyttig her. Du kan være bedre stillet ved at suge dataene ind i lister eller NumPy-arrays og overføre dem tilline.set
som ovenfor, uden at involvere Pandas. -
Åbning af en forbindelse til databasen skal ske én gang.
animate
bliver ringet op mange gange. Så det er bedre at definereconn
ogc
ogquery
-- alt, der ikke ændres med hvert kald tilanimate
--uden foranimate
, og send dem tilbage som argumenter tilanimate
viafargs
parameter.