GIL's LAB

Matplotlib을 이용한 그래프 업데이트 방법 본문

파이썬/데이터 분석을 위한 파이썬

Matplotlib을 이용한 그래프 업데이트 방법

GIL~ 2021. 12. 29. 10:14

이번 포스팅에서는 데이터가 추가될 때마다 그래프를 업데이트하는 방법에 대해 알아보겠습니다.

 

예제 소개

설명을 위해서, 시간(t)이 지남에 따라 데이터가 추가되는데, 그 데이터는 sin(t)라고 하겠습니다. 

즉, t = 100일 때 그려지는 그래프는 아래와 같이 그릴 수 있습니다.

먼저 필요한 모듈을 임포트해줍니다. 

import matplotlib.pyplot as plt
import numpy as np

다음으로 데이터 t와 y를 만들어 plot 함수로 시각화합니다. 

t = np.arange(0, 100, 1)
y = np.sin(t)
plt.plot(t, y)
plt.show()

 

이제 t의 요소가 한 개씩 추가될 때 그래프를 업데이트하는 방법을 알아보겠습니다. 

 

가장 많이 하는 실수

실수 유형 1은 아래와 같이 i번째 데이터가 추가될 때마다 plot과 show를 사용하는 것입니다.  

for i in range(1, 100):
    plt.plot(t[:i], y[:i])
    plt.show()

show를 하면 지금까지 그린 그래프 객체를 출력하기 때문에, 위 코드는 아래와 같이 그래프를 i가 바뀔 때마다 출력합니다. 

(후략)

 

이것보다는 조금 나은(?) 실수는 show를 반복문에서 빼는 것입니다.

for i in range(1,100):
    plt.plot(t[:i], y[:i])
plt.show()

위 코드는 아래와 같은 결과를 냅니다.

조금 괴랄해보이는 그래프가 그려졌는데, 그 이유는 t[:i]와 y[:i]에 대한 그래프를 반복적으로 그리다보니 그래프가 중첩되서 그렇습니다. 

예를 들어, i가 1이상이면 t[0]과 y[0]은 항상 그래프에 나타나게 되므로 100번이나 찍히게 됩니다. 

또한, 실시간으로 업데이트되지도 않습니다.

 

그럼 방법은?

다음과 같이, display.clear_output을 사용하여 기존에 그린 객체를 지우는 방식으로 접근할 수 있습니다.

from IPython import display
for i in range(1,100):
    plt.plot(t[:i], y[:i])
    plt.show()
    display.clear_output(wait=True)

위 코드 실행 결과는 아래에서 확인할 수 있습니다.

https://tv.kakao.com/channel/3934600/cliplink/425139713

 

 


데이터 분석 서비스가 필요한 분은 아래 링크로! 

https://kmong.com/gig/374194 

 

데이터사이언스 박사의 데이터 분석 서비스 드립니다. | 150000원부터 시작 가능한 총 평점 5점의 I

78개 총 작업 개수 완료한 총 평점 5점인 데이터사이언스박사의 IT·프로그래밍, 데이터 분석·시각화 서비스를 68개의 리뷰와 함께 확인해 보세요. IT·프로그래밍, 데이터 분석·시각화 제공 등 150

kmong.com

 

Comments