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

Python Matplotlib로 이미지 다시 그리기 – 실시간 플롯 갱신 완벽 가이드

Python의 Matplotlib 라이브러리를 활용하면 실시간으로 데이터가 추가되는 것처럼 이미지나 그래프를 반복적으로 다시 그릴 수 있습니다. 이는 센서 데이터 모니터링, 시뮬레이션 결과 갱신 등 동적인 시각화가 필요한 상황에서 특히 유용합니다.

이 글에서는 figure를 생성하고 무작위 데이터를 반복해서 그려 화면을 계속 갱신하는 방법을 단계별로 알아보겠습니다.

구현 단계

  • figure 크기 설정: rcParams를 통해 figure 크기를 지정하고, 서브플롯 사이 및 주변 여백(padding)을 자동으로 조정합니다.
  • figure 생성 또는 활성화: 새 figure를 만들거나 기존 figure를 활성화합니다.
  • 현재 축 가져오기: gca() 메서드로 현재 축(Axes) 객체를 얻습니다.
  • figure 표시: 현재 figure를 화면에 출력합니다.
  • 반복 실행: 20번의 반복문 안에서 플롯을 계속 갱신합니다.
  • 무작위 데이터 플로팅: plot() 메서드를 사용해 무작위 좌표에 '*' 마커를 그립니다.
  • 다시 그리기 및 일시 정지: canvas.draw()로 figure를 갱신한 뒤, pause()로 잠시 멈춰 변경 사항을 확인합니다.
  • 창 닫기: 작업이 끝나면 figure 창을 닫습니다.

예제 코드

import numpy as np
from matplotlib import pyplot as plt

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

fig = plt.figure()
ax = fig.gca()
fig.show()

for i in range(20):
    ax.plot(np.random.randint(1, 5), np.random.randint(1, 5), '*', ms=10)
    fig.canvas.draw()
    plt.pause(0.1)

plt.close(fig)

실행 결과

코드를 실행하면 0.1초 간격으로 무작위 위치에 별(*) 모양의 마커가 하나씩 추가되며, 마치 실시간으로 데이터가 유입되는 듯한 애니메이션 효과를 확인할 수 있습니다. 총 20개의 마커가 모두 그려진 후 figure 창은 자동으로 닫힙니다.

Python Matplotlib로 이미지 다시 그리기 – 실시간 플롯 갱신 완벽 가이드

핵심 메서드 정리

  • fig.canvas.draw(): figure 캔버스를 강제로 다시 그려 최신 상태를 화면에 반영합니다.
  • plt.pause(interval): 지정한 시간(초)만큼 GUI 이벤트 루프를 실행하며 대기합니다. 이 함수가 호출되어야 갱신된 내용이 실제로 화면에 나타납니다.
  • plt.close(fig): 해당 figure 창을 닫고 관련 리소스를 해제합니다.