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

Matplotlib의 animation.FuncAnimation()에 인수를 전달하는 방법

Python의 Matplotlib에서 animation.FuncAnimation()에 인수를 전달하여 등고선 플롯(contour plot)을 애니메이션으로 구현하려면 다음 단계를 따르면 됩니다.

  • 10×10 크기의 무작위 데이터를 생성합니다.
  • subplots() 메서드를 사용해 figure와 서브플롯 집합을 만듭니다.
  • FuncAnimation() 클래스가 함수 func를 반복적으로 호출하도록 하여 애니메이션을 생성합니다.
  • 프레임마다 등고선 값을 갱신하는 animate() 함수를 정의하고, 이를 FuncAnimation() 클래스에 콜백으로 전달합니다.
  • 완성된 figure를 화면에 표시하려면 show() 메서드를 사용합니다.

예제 코드

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

data = np.random.randn(800).reshape(10, 10, 8)
fig, ax = plt.subplots()

def animate(i):
    ax.clear()
    ax.contourf(data[:, :, i])

ani = animation.FuncAnimation(fig, animate, 5, interval=50, blit=False)

plt.show()

코드 설명

위 예제에서는 np.random.randn(800)으로 생성한 난수를 (10, 10, 8) 형태로 재구성하여 3차원 데이터 배열을 만듭니다. 세 번째 축(크기 8)은 애니메이션의 프레임 역할을 합니다.

FuncAnimation()의 주요 인수는 다음과 같습니다.

  • fig: 애니메이션이 그려질 figure 객체
  • animate: 각 프레임을 그리는 콜백 함수
  • 5: 반복할 프레임 수(frames)
  • interval=50: 프레임 사이의 지연 시간(밀리초)
  • blit=False: 전체 figure를 매 프레임 다시 그리도록 설정

실행 결과

Matplotlib의 animation.FuncAnimation()에 인수를 전달하는 방법

코드를 실행하면 50밀리초 간격으로 프레임이 전환되면서 데이터 슬라이스별 등고선 플롯이 연속적으로 업데이트되는 애니메이션을 확인할 수 있습니다.