Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So aktualisieren Sie ein Diagramm mit Matplotlib

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 Sie df.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 an line.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 und c und query -- alles, was sich nicht mit jedem Aufruf von animate ändert --außerhalb von animate , und übergebe sie als Argumente an animate über diefargs Parameter.