programming/python

(matplotlib) 파이썬 실시간 그래프 출력

limmmmm 2023. 1. 25. 11:33
반응형
반응형

파이썬에서 실시간 그래프(센서 데이터 등)를 출력하는 방법을 말씀드리겠습니다.
(matplotlib animation 이용)

Import

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

 

figure 설정

  • 그래프 틀 만드는거라고 보면 됨
  • fig, ax = plt.subplots() ax.set_xlim(0,100) ax.set_ylim(-3,3)
  • matplotlib 의 subplot을 생성하여 subplot에 그래프 생성 예정

 

Data 입력 받을 list 생성

x = [0]
y = [0]
  • x는 index, y는 받은 데이터로 사용 예정

 

함수 생성(데이터 표기)

def animate(i, x, y):
    y_data = 입력받은 데이터

    x.append(x[-1] + 1)
    y.append(y_data)

    x = x[-100:]  # 최근 100개만 봄
    y = y[-100:]

    ax.clear()
    ax.plot(x, y)
  • y_data : 읽어들인 센서 데이터(저는 소켓을 사용하였고, 소켓을 사용 방법은 아래에 있습니다.)

https://limmmmm.tistory.com/23

 

(파이썬) 소켓 통신

파이썬에서 소켓통신을 사용하는 방법에 대해서 말씀드리겠습니다. Import import socketconnection(서버 측) HOST = '192.168.0.123' PORT = 12345 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind((

limmmmm.tistory.com

여러 데이터 표기하는 방법

  • y대신 y1, y2 .. 이런식으로 생성한 뒤 같은 방식으로 append, plot 해주면 됨
def animate(i, x, y1, y2, y3):
    y_data1 = 입력받은 데이터 
    y_data2 = 입력받은 데이터 
    y_data3 = 입력받은 데이터 
    x.append(x[-1] + 1) 

    y1.append(y_data1) 
    y2.append(y_data2) 
    y3.append(y_data3) 

    x = x[-100:] # 최근 100개만 봄 
    y1 = y1[-100:] 
    y2 = y2[-100:] 
    y3 = y3[-100:] 
    ax.clear() 
    ax.plot(x, y1) 
    ax.plot(x, y2)
    ax.plot(x, y3)

 

함수 실행

animation = FuncAnimation(fig, animate, fargs=(x, y), interval=1)
plt.show()

 

반응형