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

Matplotlib 서브플롯과 ArtistAnimation으로 애니메이션 구현하기


Matplotlib에서 서브플롯(subplots)과 ArtistAnimation을 활용해 애니메이션을 제작하려면 아래 단계를 순서대로 따르면 됩니다.

  • 그림(figure) 크기를 설정하고 서브플롯 사이와 주변의 여백(padding)을 조정합니다.
  • 하나의 그림과 서브플롯 집합을 생성합니다.
  • 깨끗한 초기 프레임을 그리는 사용자 정의 함수 init을 작성합니다.
  • FuncAnimation을 사용해 지정된 함수(func)를 반복 호출하는 방식으로 애니메이션을 만듭니다.
  • animate 함수를 정의하여 각 프레임마다 데이터 포인트를 업데이트합니다.
  • show() 메서드를 호출해 완성된 그림을 화면에 표시합니다.

예제 코드

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

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
fig, ax = plt.subplots()
xdata, ydata = [], []
ln, = plt.plot([], [], 'r*')

def init():
    ax.set_xlim(0, 100)
    ax.set_ylim(-1, 1)
    return ln,

def animate(frame):
    xdata.append(frame)
    ydata.append(np.sin(frame))
    ln.set_data(xdata, ydata)
    return ln,

ani = FuncAnimation(fig, animate, init_func=init, blit=True, frames=100)
plt.show()

코드 설명

init 함수는 x축을 0~100, y축을 -1~1 범위로 설정하여 애니메이션이 시작되기 전의 초기 축 상태를 정의합니다. animate 함수는 프레임 번호를 x값으로 받아 그에 대응하는 사인(sin) 값을 y값으로 추가하고, set_data() 메서드로 라인 객체를 갱신합니다. 또한 blit=True 옵션은 변경된 영역만 다시 그려 렌더링 성능을 높여 주며, frames=100은 총 100개의 프레임을 생성하도록 지정합니다.

실행 결과

Matplotlib 서브플롯과 ArtistAnimation으로 애니메이션 구현하기

코드를 실행하면 빨간색 별표(*) 마커가 프레임마다 하나씩 추가되면서 사인 곡선이 왼쪽에서 오른쪽으로 그려지는 애니메이션을 확인할 수 있습니다.