Tài liệu này sẽ giải thích một chút về cách sử dụngFuncAnimation. Tuy nhiên, có ví dụ trong thegallery và các bài hướng dẫn trên blog, chẳng hạn như của Jake Vanderplas và PDF của Sam Dolan .
Ví dụ này từ hướng dẫn của Jake Vanderplas có lẽ là hoạt hình ofmatplotlib "Hello World":
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()
Thay đổi các giá trị hoặc dòng mã khác nhau và xem điều gì sẽ xảy ra. Xem điều gì sẽ xảy ra nếu bạn thay đổi return [line]
sang một cái gì đó khác. Nếu bạn nghiên cứu và chơi với những ví dụ này, bạn có thể tìm hiểu cách các mảnh ghép lại với nhau.
Khi bạn hiểu ví dụ này, bạn sẽ có thể sửa đổi nó để phù hợp với mục đích của mình.
Nếu bạn gặp sự cố, hãy đăng mã của bạn và mô tả thông báo lỗi hoặc hành vi bạn thấy.
Một số mẹo:
-
Vì hoạt ảnh yêu cầu gọi
line.set_data
, Tôi không nghĩ bạn có thể sử dụngdf.plot()
của Pandas . Trên thực tế, tôi không chắc liệu Pandas DataFrame có hữu ích ở đây hay không. Tốt hơn là bạn nên hút dữ liệu vào danh sách hoặc mảng NumPy và chuyển chúng vàoline.set
như trên, mà không để Gấu trúc tham gia. -
Mở một kết nối đến cơ sở dữ liệu nên được thực hiện một lần.
animate
được gọi nhiều lần. Vì vậy, tốt hơn là xác địnhconn
vàc
vàquery
- bất kỳ điều gì không thay đổi với mỗi lần gọi đếnanimate
- bên ngoài củaanimate
và chuyển chúng trở lại dưới dạng đối số đểanimate
thông quafargs
tham số.