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

Matplotlib 플롯에 텍스트 애니메이션 구현하는 방법

Matplotlib 플롯에 텍스트 애니메이션 넣기

데이터 시각화에서 텍스트에 애니메이션 효과를 적용하면 타이핑되는 문구나 동적인 라벨을 표현할 수 있어 발표 자료나 대시보드의 완성도를 크게 높일 수 있습니다. Matplotlib의 FuncAnimation 클래스를 활용하면 몇 줄의 코드만으로 플롯 위의 텍스트를 부드럽게 애니메이션 처리할 수 있습니다.

구현 단계

  • 그림(figure) 크기를 설정하고 서브플롯 사이와 주변의 여백(padding)을 조정합니다.
  • x축과 y축의 표시 범위(limits)를 지정합니다.
  • 애니메이션으로 보여줄 문자열 변수를 초기화합니다.
  • text() 메서드를 사용해 플롯 위에 텍스트를 배치합니다.
  • FuncAnimation()으로 텍스트를 애니메이션화하고, 프레임마다 축에 표시되는 텍스트를 갱신합니다.
  • 축(axis)을 숨겨 텍스트만 돋보이게 합니다.
  • show() 메서드로 그림을 화면에 출력합니다.

예제 코드

from matplotlib import pyplot as plt, animation

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

fig, ax = plt.subplots()
ax.set(xlim=(-1, 1), ylim=(-1, 1))

string = 'Hello, how are you doing?'
label = ax.text(0, 0, string[0], ha='center', va='center', fontsize=20, color="Red")

def animate(i):
    label.set_text(string[:i + 1])

anim = animation.FuncAnimation(
    fig, animate, interval=200, frames=len(string))

ax.axis('off')
plt.show()

코드 핵심 포인트

animate(i) 함수는 프레임 번호 i를 인자로 받아 문자열을 처음부터 i+1번째 글자까지만 잘라서 텍스트 객체에 다시 설정합니다. 이렇게 하면 글자가 하나씩 추가되는 타이핑 효과가 만들어집니다.

FuncAnimation의 주요 매개변수는 다음과 같습니다.

  • interval=200: 프레임 사이의 지연 시간을 밀리초(ms) 단위로 지정합니다. 값이 작을수록 타이핑 속도가 빨라집니다.
  • frames=len(string): 전체 프레임 수를 문자열 길이와 같게 설정하여 문장이 끝까지 완성되도록 합니다.

실행 결과

코드를 실행하면 빨간색 문장 "Hello, how are you doing?"이 화면 중앙에서 한 글자씩 타이핑되듯 나타나는 애니메이션이 재생됩니다.

Matplotlib 플롯에 텍스트 애니메이션 구현하는 방법