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_dataerfordert , 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.setzu übergeben wie oben, ohne Pandas einzubeziehen. -
Das Öffnen einer Verbindung zur Datenbank sollte einmalig erfolgen.
animatewird oft angerufen. Daher ist es besser,connzu definieren undcundquery-- alles, was sich nicht mit jedem Aufruf vonanimateändert --außerhalb vonanimate, und übergebe sie als Argumente ananimateüber diefargsParameter.