Я новичок в python и пытаюсь составить график данных в реальном времени от последовательного датчика, подключенного к Raspberry Pi 3. Я пытался изменить ось X на ось времени, но продолжаю получатьОшибка строки для плавания.Как я могу изменить свой код, чтобы получить график в реальном времени, который читает данные каждую секунду и постоянно обновляется, а ось X показывает время, в которое происходит чтение точки.
Вот что у меня есть,
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import serial
import platform
import time
import datetime
import csv
import re
print("Python version: " + platform.python_version())
print("matplotlib version: " + mpl.__version__)
fig, ax = plt.subplots()
line, = ax.plot(np.random.rand(10))
ax.set_ylim(-.1, .08)
xdata, ydata = [0]*100, [0]*100
SerialIn = serial.Serial("/dev/ttyUSB0",115200)
FILE = open('Pressure ' + time.strftime("%Y-%m-%d %H:%M") + '.csv','a')
pattern = re.compile( r'([0-9 .+-]*)' ) #Added
def update(data):
line.set_ydata(data)
return line,
def run(data):
global xdata, ydata
x,y = data
if (x == 0):
xdata = [0]*100
ydata = [0]*100
del xdata[0]
del ydata[0]
xdata.append(x)
ydata.append(y)
line.set_data(xdata, ydata)
return line,
def data_gen():
x = 10
while True:
if (x >= 9):
x = 0
else:
x += 0.1
SerialIn.write(b"P\r")
try:
inRaw = re.search( pattern,
SerialIn.read(SerialIn.in_waiting).decode('utf-8') ).group(0)
inInt = float(inRaw)
TIME = time.strftime('%H:%M:%S')
FILE.write("{0},{1}\r".format(TIME, inInt))
FILE.flush()
print('['+time.strftime('%H:%M:%S')+']',inInt)
time.sleep(1-time.time()%1)
except:
inInt = 0
yield x, inInt
ani = animation.FuncAnimation(fig, run, data_gen, interval=0, blit=True)
plt.show()
SerialIn.close()
FILE.close()