FuncAnimation으로 애니메이션
FuncAnimation으로 차트를 프레임마다 움직이고 GIF로 저장합니다.
소개
애니메이션은 여러 번 다시 그려지는 차트입니다. FuncAnimation은 프레임마다 update 함수를 한 번 부릅니다. 이 함수는 새 차트를 그리지 않고 이미 있는 선의 데이터만 바꾸므로 빠르게 동작합니다.
ax.plot은 선의 리스트를 돌려주고, line, =은 그중 하나뿐인 선을 꺼냅니다. update(frame)은 0, 1, 2... 를 받아 set_ydata로 매번 파동을 조금씩 옮깁니다. frames는 프레임 수, interval은 프레임 사이 시간(밀리초)입니다. animation.save는 PillowWriter로 GIF를 저장합니다. 온라인 에디터에서는 GIF가 워크스페이스에 나타나고 plt.show()는 마지막 프레임을 보여 줍니다.
인터랙티브 시각화
Play를 누르고 frame 슬라이더를 움직이고 프레임 수와 간격을 바꿔 보세요. 강조된 줄은 프레임마다 한 번 실행됩니다.
실행 가능한 Matplotlib 예제
Matplotlib
main.py
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.animation import FuncAnimation, PillowWriter
x = np.linspace(0, 2 * np.pi, 200)
fig, ax = plt.subplots(figsize=(7, 4))
line, = ax.plot(x, np.sin(x))
ax.set_ylim(-1.2, 1.2)
ax.set_title("A moving wave")
def update(frame):
line.set_ydata(np.sin(x + frame / 10))
return line,
animation = FuncAnimation(fig, update, frames=60, interval=50)
animation.save("wave.gif", writer=PillowWriter(fps=20))
print("Saved wave.gif")
plt.show()
