Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Matplotlib로 윤곽선(Contour) 애니메이션 만드는 방법

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) 그래프가 애니메이션으로 재생됩니다.

Matplotlib로 윤곽선(Contour) 애니메이션 만드는 방법

코드 핵심 포인트

  • np.random.randn(800).reshape(10, 10, 8): 총 800개의 난수를 (10 × 10 × 8) 형태의 3차원 배열로 변형하여 8개 프레임의 데이터를 준비합니다.

  • ax.clear(): 각 프레임마다 이전 그래프를 지우고 새로운 윤곽선을 그려 잔상이 남지 않도록 합니다.

  • interval=50: 프레임 간 간격을 밀리초(ms) 단위로 지정하며, 값이 작을수록 애니메이션이 빠르게 재생됩니다.