Matplotlib에서는 matplotlib.animation 모듈의 FuncAnimation 클래스를 활용하면 윤곽선(Contour) 그래프를 부드럽게 움직이는 애니메이션을 손쉽게 만들 수 있습니다.
구현 단계
그림 크기를 설정하고 서브플롯 주변과 사이의 여백(padding)을 조정합니다.
윤곽선 플롯에 사용할 데이터를 생성합니다.
Figure와 서브플롯(Axes) 집합을 생성합니다.
FuncAnimation으로 animate 함수를 반복 호출하여 애니메이션을 생성합니다. 이때animate()함수가 프레임마다 윤곽선 데이터 포인트를 변경합니다.plt.show()메서드를 사용해 그림을 화면에 표시합니다.
예제 코드
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
# 그림 크기 설정
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
# 윤곽선 플롯용 랜덤 데이터 생성
data = np.random.randn(800).reshape(10, 10, 8)
# Figure와 서브플롯 생성
fig, ax = plt.subplots()
# 프레임마다 윤곽선 데이터를 변경하는 함수
def animate(i):
ax.clear()
ax.contourf(data[:, :, i], cmap='plasma')
# animate 함수 호출로 애니메이션 생성
ani = animation.FuncAnimation(fig, animate, 5, interval=50, blit=False)
# 그래프 표시
plt.show()실행 결과
위 코드를 실행하면 랜덤하게 생성된 데이터가 프레임마다 바뀌면서, plasma 컬러맵이 적용된 채워진 윤곽선(filled contour) 그래프가 애니메이션으로 재생됩니다.

코드 핵심 포인트
np.random.randn(800).reshape(10, 10, 8): 총 800개의 난수를 (10 × 10 × 8) 형태의 3차원 배열로 변형하여 8개 프레임의 데이터를 준비합니다.
ax.clear(): 각 프레임마다 이전 그래프를 지우고 새로운 윤곽선을 그려 잔상이 남지 않도록 합니다.
interval=50: 프레임 간 간격을 밀리초(ms) 단위로 지정하며, 값이 작을수록 애니메이션이 빠르게 재생됩니다.