Я пытаюсь построить график в реальном времени, используя класс FuncAnimation от matplotlib. Данные поступают от arduino с использованием библиотеки pyserial. Я пробовал следующий код для построения графика в реальном времени, но график пуст, я вижу оси, тики и т. д., но не график. Может ли кто-нибудь помочь мне, что я делаю неправильно здесь? Заранее спасибо.
from matplotlib import pyplot as plt
from matplotlib.animation import FuncAnimation
import serial
import os
import numpy as np
import datetime
import pandas as pd
fig = plt.figure()
port= 'COM10'
baudrate = 9600
timeout = 2
ser = serial.Serial(port=port, baudrate=baudrate, timeout=timeout)
def animate(i):
j = 0
while True:
try:
loadcells = ser.readline()
loadcells = loadcells.decode('utf-8').rstrip().replace('\t','').split(',')
print(loadcells)
loadcell1 = float(loadcells[0])
# loadcell2 = loadcells[1]
plt.cla()
plt.plot(loadcell1)
plt.pause(0.001)
j+=1
# plt.plot(loadcell2)
except Exception as e:
print(e)
continue
except KeyboardInterrupt as e1:
print(e1)
ser.close()
anim = FuncAnimation(fig, animate,
frames = 200,
interval = 0.1,
blit = False)
plt.tight_layout()
plt.show()
У вас не должно быть бесконечного цикла в animate()
. FuncAnimation
работает, многократно вызывая animate()
через заданный интервал (interval=0.1
).
Вам нужно переписать свою функцию animate()
, где вы читаете последовательный порт, рисуете результат и возвращаете (тоже нет pause()
).
Хорошо, попробуем это и сообщим вам. Спасибо