Matplotlib에서 텍스트를 동적으로 갱신하는 방법
Matplotlib에서는 키보드 이벤트와 애니메이션 기능을 활용하여 화면에 표시된 텍스트를 실시간으로 새로 고칠 수 있습니다. 예를 들어, 사용자가 특정 키를 누르면 그래프 위의 텍스트 내용이 즉시 변경되도록 만들 수 있습니다.
아래 단계를 따라 구현해 보겠습니다.
- 그림(figure) 크기를 설정하고 서브플롯 사이 및 주변의 여백(padding)을 조정합니다.
- figure와 서브플롯(subplots) 집합을 생성합니다.
- 축(axes)에 텍스트를 추가합니다.
- "z" 키와 "c" 키 입력에 따라 텍스트를 업데이트하는 사용자 정의 함수를 작성합니다.
- 작성한 함수를 key_press_event 이벤트에 연결(bind)합니다.
- figure가 포함된 캔버스(canvas)를 그립니다.
- 텍스트가 포함된 figure를 애니메이션으로 처리합니다.
- 최종적으로 figure를 화면에 표시하려면 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()
text = ax.text(.5, .5, 'First Text')
def action(event):
if event.key == "z":
text.set_text("zoom")
elif event.key == "c":
text.set_text("cool")
fig.canvas.mpl_connect('key_press_event', action)
fig.canvas.draw()
animation = animation.ArtistAnimation(fig, [(text,)])
plt.show()동작 원리 설명
핵심은 text.set_text() 메서드입니다. 이 메서드는 기존 텍스트 객체의 내용을 새 문자열로 교체하며, 별도의 객체 재생성 없이 화면에 바로 반영됩니다.
또한 mpl_connect('key_press_event', action)을 통해 키보드 입력 이벤트가 발생할 때마다 action 함수가 자동으로 호출됩니다. "z" 키를 누르면 텍스트가 "zoom"으로, "c" 키를 누르면 "cool"으로 변경됩니다.
실행 결과
코드를 실행하면 다음과 같이 키 입력에 따라 텍스트가 실시간으로 바뀌는 것을 확인할 수 있습니다.

이 방식은 대화형(interactive) 시각화 도구를 만들 때 유용하게 활용할 수 있으며, 마우스 클릭 이벤트나 타이머 이벤트와 결합하면 더욱 다양한 동적 인터랙션을 구현할 수 있습니다.