如何在 Matplotlib 中繪製散點圖動畫?
使用 matplotlib 的 FuncAnimation 方法,我們可以製作圖表動畫。我們可以傳入一個使用者自定義方法,在其中我們將更改粒子的位置,最後,我們將返回繪圖型別。
步驟
獲取粒子的初始位置、速度、力和大小。
建立新圖形,或使用 figsize = (7, 7) 啟用現有圖形。
向當前圖形新增座標軸並將其設為當前座標軸,並使用 xlim 和 ylim。
繪製粒子的初始位置散點圖。
透過重複呼叫函式 *func* 來製作動畫。我們可以將幫助改變粒子位置的使用者自定義方法傳入 FuncAnimation 類中。
使用 plt.show() 顯示圖形。
示例
import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation import numpy as np dt = 0.005 n=20 L = 1 particles=np.zeros(n,dtype=[("position", float , 2), ("velocity", float ,2), ("force", float ,2), ("size", float , 1)]) particles["position"]=np.random.uniform(0,L,(n,2)); particles["velocity"]=np.zeros((n,2)); particles["size"]=0.5*np.ones(n); fig = plt.figure(figsize=(7,7)) ax = plt.axes(xlim=(0,L),ylim=(0,L)) scatter=ax.scatter(particles["position"][:,0], particles["position"][:,1]) def update(frame_number): particles["force"]=np.random.uniform(-2,2.,(n,2)); particles["velocity"] = particles["velocity"] + particles["force"]*dt particles["position"] = particles["position"] + particles["velocity"]*dt particles["position"] = particles["position"]%L scatter.set_offsets(particles["position"]) return scatter, anim = FuncAnimation(fig, update, interval=10) plt.show()
輸出
廣告