[파이썬] matplotlib 동적 데이터의 실시간 그래프

Matplotlib은 파이썬에서 데이터 시각화를 위한 강력한 라이브러리입니다. 그리고 실시간 데이터를 동적으로 그래프로 표현하는 것도 가능합니다. 이번 블로그 포스트에서는 Matplotlib을 사용하여 동적 데이터의 실시간 그래프를 그리는 방법에 대해 알아보겠습니다.

실시간 데이터의 그래프 업데이트

Matplotlib에서 실시간 그래프를 그리기 위해서는 먼저 데이터를 업데이트하고 그에 맞게 그래프를 업데이트해야 합니다. 이를 위해 FuncAnimation 클래스를 이용합니다.

import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

# 데이터 업데이트 함수
def update_data(frame):
    # 데이터 업데이트 로직 구현

# 그래프 업데이트 함수
def update_graph(frame):
    # 그래프 업데이트 로직 구현

# 그래프 초기화
fig, ax = plt.subplots()
line, = ax.plot([], [], lw=2)

# 애니메이션 생성
animation = FuncAnimation(fig, update_graph, frames=range(100), interval=200)

# 그래프 표시
plt.show()

위의 예제 코드에서는 update_data 함수로 데이터를 업데이트하고, update_graph 함수로 그래프를 업데이트합니다. FuncAnimation 클래스를 사용하여 애니메이션을 생성하고, frames 파라미터로 프레임 수를 설정하며, interval 파라미터로 갱신 간격을 설정합니다.

예제: 랜덤 데이터의 실시간 그래프

이제 실제로 랜덤 데이터를 생성하고 실시간으로 그래프를 업데이트하는 예제를 살펴보겠습니다.

import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import random

# 데이터 초기화
x_data = []
y_data = []

# 데이터 업데이트 함수
def update_data(frame):
    x = frame
    y = random.randint(0, 10)
    x_data.append(x)
    y_data.append(y)

# 그래프 업데이트 함수
def update_graph(frame):
    line.set_data(x_data, y_data)

# 그래프 초기화
fig, ax = plt.subplots()
line, = ax.plot([], [], lw=2)

# 애니메이션 생성
animation = FuncAnimation(fig, update_graph, frames=range(100), interval=200)

# 그래프 표시
plt.show()

위의 예제 코드에서는 update_data 함수에서는 x값은 프레임 수로, y값은 0과 10 사이의 랜덤한 수로 설정하여 데이터를 업데이트합니다. 그리고 update_graph 함수에서는 line.set_data를 사용하여 그래프를 업데이트합니다.

결론

이렇게 Matplotlib을 사용하여 동적 데이터의 실시간 그래프를 그릴 수 있습니다. FuncAnimation 클래스를 이용하여 데이터를 업데이트하고 그래프를 업데이트하는 방식을 사용하면 실시간으로 변화하는 데이터를 시각적으로 표현할 수 있습니다. 이 기능은 데이터 분석, 실시간 모니터링 등 다양한 분야에 유용하게 사용될 수 있습니다.