Dokumentace je trochu lehká na vysvětlení, jak používatFuncAnimation. Existují však příklady v galerii a blogové výukové programy, jako je Jake Vanderplas a PDF Sama Dolana .
Tento příklad z tutoriálu Jakea Vanderplase je možná animace „Hello World“ z 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()
Změňte různé hodnoty nebo řádky kódu a uvidíte, co se stane. Podívejte se, co se stane, když změníte return [line]
na něco jiného. Pokud budete studovat a hrát si s těmito příklady, můžete se naučit, jak do sebe jednotlivé části zapadají.
Jakmile pochopíte tento příklad, měli byste být schopni jej upravit tak, aby odpovídal vašemu cíli.
Pokud máte potíže, zveřejněte svůj kód a popište, jakou chybovou zprávu nebo chybné chování vidíte.
Několik tipů:
-
Protože animace vyžaduje volání
line.set_data
, Nemyslím si, že můžete použít Pandas'df.plot()
. Ve skutečnosti si nejsem jistý, zda je zde Pandas DataFrame užitečný. Možná by bylo lepší nasát data do seznamů nebo polí NumPy a předat je doline.set
jak je uvedeno výše, aniž by do toho byly zapojeny pandy. -
Otevření připojení k databázi by mělo být provedeno jednou.
animate
je volán mnohokrát. Je tedy lepší definovatconn
ac
aquery
-- cokoli, co se nemění s každým volánímanimate
--mimoanimate
a předat je zpět jako argumenty doanimate
přesfargs
parametr.