sql >> Base de Datos >  >> RDS >> Mysql

Cómo actualizar un gráfico usando matplotlib

La documentación es un poco ligera en la explicación de cómo usar FuncAnimation. Sin embargo, hay ejemplos en la galería y blogtutoriales, como Jake Vanderplas's y PDF de Sam Dolan .

Este ejemplo del tutorial de Jake Vanderplas es quizás la animación "Hello World" de matplotlib:

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()

Cambie varios valores o líneas de código y vea qué sucede. Vea lo que sucede si cambia return [line] a otra cosa Si estudias y juegas con estos ejemplos, puedes aprender cómo encajan las piezas.

Una vez que comprenda este ejemplo, debería poder modificarlo para que se ajuste a su objetivo.

Si tiene problemas, publique su código y describa qué mensaje de error o mal comportamiento ve.

Algunos consejos:

  • Dado que la animación requiere llamar a line.set_data , no creo que puedas usar df.plot() de Pandas . De hecho, no estoy seguro de si Pandas DataFrame es útil aquí. Puede que sea mejor absorber los datos en listas o arreglos NumPy y pasarlos a line.set como arriba, sin involucrar a los Pandas.

  • La apertura de una conexión a la base de datos debe hacerse una vez. animate lo llaman muchas veces. Entonces es mejor definir conn y c y query -- cualquier cosa que no cambie con cada llamada a animate --fuera de animate , y pásalos como argumentos a animate a través de los fargs parámetro.