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

Matplotlib로 사인 곡선 애니메이션 만드는 방법

Matplotlib의 animation 모듈을 활용하면 사인 곡선을 부드럽게 움직이는 애니메이션을 손쉽게 구현할 수 있습니다. 이 글에서는 FuncAnimation 클래스를 사용해 사인 곡선을 애니메이션으로 표현하는 전체 과정을 단계별로 살펴보겠습니다.

구현 단계

  • 그림(figure) 크기를 설정하고 서브플롯 주변의 여백을 조정합니다.
  • 새 그림을 생성하거나 기존 그림을 활성화합니다.
  • 현재 그림에 축(axes)을 추가하고 x, y축 범위를 지정합니다.
  • 빈 리스트를 사용해 선(line) 객체를 초기화합니다.
  • init() 함수에서 선 데이터를 빈 상태로 설정하여 애니메이션 시작점을 준비합니다.
  • animate() 함수에서 프레임마다 사인 곡선 값을 갱신하고 선 객체를 반환합니다.
  • show() 메서드로 결과 그림을 화면에 표시합니다.

예제 코드

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

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

fig = plt.figure()
ax = plt.axes(xlim=(0, 2), ylim=(-2, 2))
line, = ax.plot([], [], lw=2)

def init():
    line.set_data([], [])
    return line,

def animate(i):
    x = np.linspace(0, 2, 1000)
    y = np.sin(2 * np.pi * (x - 0.01 * i))
    line.set_data(x, y)
    return line,

anim = animation.FuncAnimation(fig, animate, init_func=init, frames=200, interval=20, blit=True)
plt.show()

코드 설명

핵심은 animation.FuncAnimation 함수입니다. 주요 매개변수는 다음과 같습니다.

  • fig: 애니메이션이 그려질 대상 그림 객체입니다.
  • animate: 각 프레임마다 호출되어 그래프를 갱신하는 함수입니다. i 값이 증가함에 따라 사인 파형이 오른쪽으로 이동합니다.
  • init_func: 애니메이션 시작 전에 선을 빈 상태로 초기화하는 함수입니다.
  • frames: 총 프레임 수로, 여기서는 200프레임이 반복됩니다.
  • interval: 프레임 간 지연 시간(밀리초)으로, 값이 작을수록 애니메이션이 빨라집니다.
  • blit: True로 설정하면 변경된 부분만 다시 그려 렌더링 성능이 향상됩니다.

실행 결과

코드를 실행하면 x축 방향으로 계속 흐르는 사인 곡선 애니메이션이 나타납니다. animate(i) 함수 내부의 0.01 * i 항이 위상(phase)을 점진적으로 변화시켜 마치 파도가 굴러가는 듯한 움직임을 만들어냅니다.

Matplotlib로 사인 곡선 애니메이션 만드는 방법