Dokumentasinya sedikit ringan tentang penjelasan cara menggunakanFuncAnimation. Namun, ada contoh di galeri dan tutorial blog, seperti Jake Vanderplas dan PDF Sam Dolan .
Contoh dari tutorial Jake Vanderplas ini mungkin adalah animasi "Hello World" dari 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()
Ubah berbagai nilai atau baris kode dan lihat apa yang terjadi. Lihat apa yang terjadi jika Anda mengubah return [line]
untuk sesuatu yang lain. Jika Anda belajar dan bermain dengan contoh-contoh ini, Anda dapat mempelajari bagaimana potongan-potongan itu cocok satu sama lain.
Setelah Anda memahami contoh ini, Anda harus dapat memodifikasinya agar sesuai dengan tujuan Anda.
Jika Anda mengalami masalah, poskan kode Anda dan jelaskan pesan kesalahan atau perilaku buruk yang Anda lihat.
Beberapa kiat:
-
Karena animasi memerlukan pemanggilan
line.set_data
, saya rasa Anda tidak bisa menggunakandf.plot()
Panda Pandas . Sebenarnya, saya tidak yakin apakah Pandas DataFrame berguna di sini. Anda mungkin lebih baik menyedot data ke dalam daftar atau array NumPy dan meneruskannya keline.set
seperti di atas, tanpa melibatkan Panda. -
Membuka koneksi ke database harus dilakukan sekali.
animate
dipanggil berkali-kali. Jadi lebih baik mendefinisikanconn
danc
danquery
-- apapun yang tidak berubah dengan setiap panggilan keanimate
--di luaranimate
, dan meneruskannya kembali sebagai argumen keanimate
melaluifargs
parameter.