Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como atualizar um gráfico usando matplotlib


A documentação é um pouco leve na explicação de como usarFuncAnimation. No entanto, existem exemplos na galeria e blogtutoriais, como Jake Vanderplas's e PDF de Sam Dolan .

Este exemplo do tutorial de Jake Vanderplas talvez seja o "Hello World" da animação 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()

Altere vários valores ou linhas de código e veja o que acontece. Veja o que acontece se você alterar return [line] para outra coisa. Se você estudar e brincar com esses exemplos, poderá aprender como as peças se encaixam.

Depois de entender este exemplo, você poderá modificá-lo para se adequar ao seu objetivo.

Se você tiver problemas, poste seu código e descreva qual mensagem de erro ou mau comportamento você vê.

Algumas dicas:

  • Como a animação requer chamar line.set_data , eu não acho que você possa usar o df.plot() do Pandas . Na verdade, não tenho certeza se o Pandas DataFrame é útil aqui. Você pode ser melhor sugando os dados em listas ou matrizes NumPy e passando-os para line.set como acima, sem envolver os Pandas.

  • A abertura de uma conexão com o banco de dados deve ser feita uma vez. animate é chamado muitas vezes. Então é melhor definir conn e c e query -- qualquer coisa que não mude com cada chamada para animate --fora de animate , e passe-os de volta como argumentos para animate via fargs parâmetro.