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

데이터 파일이 변경될 때 Matplotlib 그래프를 동적으로 업데이트하는 방법

데이터가 실시간으로 변하는 상황(예: 로그 파일, 센서 데이터 모니터링)에서는 Matplotlib 그림을 주기적으로 다시 그려야 합니다. 이 글에서는 데이터 파일의 변경에 따라 그림을 동적으로 업데이트하는 기본적인 접근 방식을 단계별로 살펴봅니다.

구현 단계

  • 그림(figure) 크기를 설정하고 서브플롯 사이 및 주변 여백을 조정합니다.
  • 행렬 형태의 서브플롯을 만들기 위해 변수 m(행 수)과 n(열 수)을 초기화합니다.
  • 무작위 16진수 코드로 색상 목록을 생성하여 각 플롯의 색을 동적으로 지정합니다.
  • plot() 메서드에 무작위 데이터를 넣어 동적 데이터 포인트를 그립니다.
  • plt.pause()로 잠시 멈추며 화면을 갱신하고, 마지막에 show() 메서드로 그림을 표시합니다.

예제 코드

import numpy as np
import matplotlib.pyplot as plt
import random

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

m = 2
n = 4

fig, axes = plt.subplots(nrows=m, ncols=n)
hexadecimal_alphabets = '0123456789ABCDEF'

color = ["#" + ''.join([random.choice(hexadecimal_alphabets)
                        for j in range(6)]) for i in range(m*n)]

for i in range(m):
    for j in range(n):
        axes[i][j].clear()
        axes[i][j].plot(np.random.rand(10), np.random.rand(10),
                        color=color[100 % np.random.randint(1, len(color))])
        plt.pause(0.1)

plt.show()

코드 설명

plt.pause(0.1)은 0.1초 동안 이벤트 루프를 실행하고 화면을 갱신하는 핵심 요소입니다. 이 호출이 있어야 반복문 안에서 그림이 매번 새로 그려집니다. 또한 axes[i][j].clear()로 이전 내용을 지운 뒤 새 데이터를 그리면 잔상 없이 깔끔하게 업데이트할 수 있습니다.

실제 데이터 파일에 적용하기

실제 환경에서는 위 예제의 np.random.rand(10) 부분을 파일에서 읽어온 데이터로 바꾸면 됩니다. 반복문 안에서 CSV나 텍스트 파일을 다시 읽어 clear() 후 새 데이터를 그리도록 하면, 파일이 갱신될 때마다 그래프가 함께 업데이트되는 실시간 모니터링 화면을 손쉽게 구현할 수 있습니다.

실행 결과

데이터 파일이 변경될 때 Matplotlib 그래프를 동적으로 업데이트하는 방법