動畫
econ-viz 提供以 Animator 為核心的輕量 GIF 流程。API 跟一般繪圖差不多:寫一個frame factory,每次回傳一個新的 Canvas 或 Figure,再掃過一串數值影格,最後存成 GIF。
安裝
如果也要筆記本互動元件,就安裝:
最簡範例
import numpy as np
from econ_viz import Canvas, levels, solve
from econ_viz.animation import Animator
from econ_viz.models import CobbDouglas
def draw(px: float) -> Canvas:
model = CobbDouglas(alpha=0.5, beta=0.5)
eq = solve(model, px=px, py=2.0, income=20.0)
lvls = levels.around(eq.utility, n=5)
return (
Canvas(
x_max=14, y_max=12,
x_label="X_1", y_label="X_2",
title="Price sweep"
)
.add_utility(model, levels=lvls)
.add_budget(px=px, py=2.0, income=20.0, fill=True)
.add_equilibrium(eq, show_ray=True, drop_dashes=True)
)
Animator(draw, frames=np.linspace(1.0, 6.0, 45)).save(
"price_sweep.gif",
fps=12,
dpi=120,
)
教學用動畫
範例腳本 examples/animation.py 會產生以下幾類動畫:
- 參數變動:價格與所得固定,只改變效用函數的某個參數。
- 價格變動:效用函數與 \(p_y\) 固定,只改變 \(p_x\)。
- 所得變動:效用函數與價格固定,只改變所得。
- 只有預算線:完全拿掉效用圖層,讓學生專心觀察預算線怎麼移動。
文件網站直接嵌入同一批 GIF,所以這裡看到的就是本機產生的結果。
參數變動
改變效用函數的參數,觀察偏好圖的形狀如何隨之改變。
|
|
|
|
價格變動
固定效用函數與背景無異曲線的效用水準,只改變一項商品的價格,呈現預算線旋轉時的均衡路徑。
|
|
|
|
|
所得變動
固定效用函數與價格,只改變所得,呈現預算線平行移動時的均衡路徑。
|
|
|
|
|
匯出說明
GIF 匯出有以下特性:
Animator.save()使用 Pillow,不需要ffmpeg。- 匯出前,每一格都會先疊在白色背景上,避免影格殘影堆疊。
- 每個動畫都可以分別設定
fps、dpi與loop。