Die Dokumentation ist ein bisschen leicht erklärt, wie man FuncAnimation verwendet. Es gibt jedoch Beispiele in der Galerie und Blogtutorials wie Jake Vanderplas und Sam Dolans PDF .
Dieses Beispiel aus dem Tutorial von Jake Vanderplas ist vielleicht die "Hello World" ofmatplotlib-Animation:
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()
Ändern Sie verschiedene Werte oder Codezeilen und sehen Sie, was passiert. Sehen Sie, was passiert, wenn Sie return [line]
ändern zu etwas anderem. Wenn Sie diese Beispiele studieren und mit ihnen spielen, können Sie lernen, wie die Teile zusammenpassen.
Sobald Sie dieses Beispiel verstanden haben, sollten Sie in der Lage sein, es an Ihr Ziel anzupassen.
Wenn Sie Probleme haben, posten Sie Ihren Code und beschreiben Sie, welche Fehlermeldung oder welches Fehlverhalten Sie sehen.
Einige Tipps:
-
Da die Animation den Aufruf von
line.set_data
erfordert , ich glaube nicht, dass Siedf.plot()
von Pandas verwenden können . Tatsächlich bin ich mir nicht sicher, ob der Pandas DataFrame hier nützlich ist. Vielleicht ist es besser, die Daten in Listen oder NumPy-Arrays zu saugen und diese anline.set
zu übergeben wie oben, ohne Pandas einzubeziehen. -
Das Öffnen einer Verbindung zur Datenbank sollte einmalig erfolgen.
animate
wird oft angerufen. Daher ist es besser,conn
zu definieren undc
undquery
-- alles, was sich nicht mit jedem Aufruf vonanimate
ändert --außerhalb vonanimate
, und übergebe sie als Argumente ananimate
über diefargs
Parameter.