透過 Python 生成影片而不將各個幀儲存為檔案


使用 FuncAnimation 方法,我們可以建立一部影片。我們將建立一個自定義的方法 update 來持續修改粒子的位置,最後,該方法將返回散點例項。

步驟

  • 獲取粒子的初始位置、速度、力和大小。

  • 建立新的圖形,或啟用帶 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()

輸出

更新於: 17-Mar-2021

318 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.