Matplotlib에서 for 루프를 사용해 여러 개의 플롯을 애니메이션으로 정의하려면 다음 단계를 따르면 됩니다.
- 그림(figure) 크기를 설정하고 서브플롯 사이와 주변의 여백(padding)을 조정합니다.
figure()메서드를 사용해 새 그림을 생성하거나 기존 그림을 활성화합니다.- 현재 그림에 축(axes)을 추가하고 이를 현재 축으로 지정합니다.
- NumPy를 사용해 두 변수 N과 x를 초기화합니다.
- 선(line) 객체 목록과 막대(bar) 패치(patch)를 가져옵니다.
- for 루프 안에서 선과 사각형(막대 패치)을 애니메이션 처리합니다.
- 함수 func를 반복적으로 호출하여 애니메이션을 생성합니다.
- 마지막으로
show()메서드를 사용해 그림을 화면에 표시합니다.
예제 코드
from matplotlib import pyplot as plt
from matplotlib import animation
import numpy as np
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
fig = plt.figure()
ax = plt.axes(xlim=(0, 2), ylim=(0, 100))
N = 4
x = np.linspace(-5, 5, 100)
lines = [plt.plot(x, np.sin(x))[0] for _ in range(N)]
rectangles = plt.bar([0.5, 1, 1.5], [50, 40, 90], width=0.1)
patches = lines + list(rectangles)
def animate(i):
for j, line in enumerate(lines):
line.set_data([0, 2, i, j], [0, 3, 10 * j, i])
for j, rectangle in enumerate(rectangles):
rectangle.set_height(i / (j + 1))
return patches
anim = animation.FuncAnimation(fig, animate,
frames=100, interval=20, blit=True)
plt.show()실행 결과
위 코드를 실행하면 4개의 선 그래프가 각 프레임마다 데이터가 갱신되며 움직이고, 동시에 3개의 막대 그래프도 높이가 프레임 인덱스에 따라 변화하는 애니메이션이 출력됩니다.

핵심 포인트 정리
이 예제의 핵심은 animate(i) 함수 내부에서 for 루프를 활용해 여러 아티스트(artist) 객체를 한 번에 업데이트한다는 점입니다. lines 리스트의 각 선은 set_data()로 좌표를 갱신하고, 막대 패치는 set_height()로 높이를 변경한 후 전체 패치 목록을 반환합니다. 반환된 패치들은 FuncAnimation의 blit=True 옵션과 함께 사용되어 변경된 부분만 다시 그려지므로, 여러 플롯을 동시에 애니메이션할 때도 높은 성능을 유지할 수 있습니다.