Matplotlib 텍스트 애니메이션 개요
Matplotlib에서 텍스트에 애니메이션 효과를 적용하려면 animation 모듈의 FuncAnimation 클래스를 활용하면 됩니다. 아래 단계를 따라가면 프레임마다 텍스트의 크기가 점점 커지고 색상이 바뀌는 간단한 애니메이션을 손쉽게 만들 수 있습니다.
구현 단계
- matplotlib에서 animation 패키지를 임포트합니다.
- 그림(figure) 크기를 설정하고 서브플롯 주변의 여백(padding)을 조정합니다.
- 새 그림을 생성하거나 기존 그림을 활성화합니다.
- 서브플롯 배치의 일부로 그림에 'ax'(축 객체)를 추가합니다.
- 문자열을 저장할 변수 "text"를 초기화합니다.
- x=0.20, y=0.50 좌표에 축 위에 텍스트를 추가합니다.
- 애니메이션에 사용할 색상 목록을 준비합니다.
- animate 함수를 반복적으로 호출하는 방식으로 애니메이션을 생성합니다. 각 프레임마다 텍스트 크기가 증가하고 색상이 변경되도록 구현합니다.
- 완성된 그림을 화면에 표시하려면 show() 메서드를 사용합니다.
예제 코드
from matplotlib import animation import matplotlib.pyplot as plt plt.rcParams["figure.figsize"] = [7.00, 3.50] plt.rcParams["figure.autolayout"] = True fig = plt.figure() ax = fig.add_subplot(111) text = 'You are welcome!' txt = ax.text(.20, .5, text, fontsize=15) colors = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf'] def animate(num): txt.set_fontsize(num * 2 + num) txt.set_color(colors[num % len(colors)]) return txt, anim = animation.FuncAnimation(fig, animate, frames=len(text) - 1, blit=True) plt.show()
핵심 포인트
FuncAnimation(fig, animate, frames=len(text) - 1, blit=True) 호출에서 frames 인자는 애니메이션이 진행될 총 프레임 수를 결정합니다. 또한 blit=True 옵션을 지정하면 화면에서 실제로 변경된 부분만 다시 그리게 되어 렌더링 성능이 크게 향상됩니다. 색상 목록은 num % len(colors) 연산으로 순환 참조되므로, 프레임 수가 색상 개수보다 많아도 오류 없이 색상이 반복 적용됩니다.
실행 결과
위 코드를 실행하면 텍스트가 점차 커지면서 색상이 계속 바뀌는 다음과 같은 애니메이션 결과를 얻을 수 있습니다.

