Мне нужна ваша помощь в решении проблемы, с которой я сейчас сталкиваюсь. Я могу распечатать серийные данные, которые были перенесены с моего мобильного телефона Bluetooth и получены COM-портом моего ноутбука. На первый взгляд кажется, что это нормально, но самое большее он может нарисовать каждые 260 мс (~ 3 кадра в секунду). однако мобильный телефон отправляет данные каждые 100 мс. Я уверен, что проблема связана с командой «plot» и «figure», которая меня смущает. Я признателен, если кто-то может исправить мой код:Медленная печать с использованием функции анимации в Matplotlib, Python
from Tkinter import *
import serial
import matplotlib.pyplot as plt
import matplotlib.animation as animation
fig = plt.figure()
ax1 = fig.add_subplot(1, 1, 1)
ser = serial.Serial("COM4", baudrate=115200, timeout=0.1)
cnt=0
xComponent=[]
plt.ylim(0,30)
while (ser.inWaiting() == 0): # Wait here until there is data
pass
def animate(i):
BluetoothString = ser.readline()
ser.flush()
dataArray = BluetoothString.split(',')
x = float(dataArray[2]) # we only need 3rd component
xComponent.append(x)
print xComponent
ax1.clear()
ax1.plot(xComponent)
plt.ylim(0,25)
global cnt
if (cnt > 16):
xComponent.pop(0)
else:
cnt = cnt + 1
ani = animation.FuncAnimation(fig, animate, interval=0)
plt.show()
Этот код ничего не делает. Где «FuncAnimation»? – furas
@furas это от [mpl] (http://matplotlib.org/api/animation_api.html#matplotlib.animation.FuncAnimation) – Aaron
Я знаю, что 'FuncAnimation' - это' mpl', но я видел его в вашем коде. Но я вижу, что вы изменили код. – furas