Python 曲线图的速度比接收到的实时值慢

Python 曲线图的速度比接收到的实时值慢,python,python-2.7,arduino-uno,Python,Python 2.7,Arduino Uno,我试图从arduino获取数据,然后尝试使用子包在python中实时显示数据。来自arduino uno板的值很快,并且在python控制台中也以相同的速率显示,但是当我试图在图形中绘制实时数据时,绘制速度非常慢。它需要与来自uno董事会的价值率一样快。 请帮忙。这是我的密码: import serial import numpy import matplotlib.pyplot as plt from drawnow import * x = [] y = [] z = [] magnit

我试图从arduino获取数据,然后尝试使用子包在python中实时显示数据。来自arduino uno板的值很快,并且在python控制台中也以相同的速率显示,但是当我试图在图形中绘制实时数据时,绘制速度非常慢。它需要与来自uno董事会的价值率一样快。 请帮忙。这是我的密码:

import serial 
import numpy
import matplotlib.pyplot as plt 
from drawnow import *
x = []
y = []
z = []
magnitude = []
arduinoData = serial.Serial('com4', 9600) 
plt.ion() 
count=0
fig = plt.figure()

def makeFig():
    ax1 = fig.add_subplot(4,1,1)
    ax1.plot(x, 'ro-', label='X axis')
    ax2 = fig.add_subplot(4,1,2)
    ax2.plot(y, 'b^-', label='Y axis')
    ax3 = fig.add_subplot(4,1,3)
    ax3.plot(z, 'gp-', label='Y axis')
    ax4 = fig.add_subplot(4,1,4)
    ax4.plot(magnitude, 'yo-', label='X axis')
while True: 
    while (arduinoData.inWaiting()==0):
        pass
    arduinoString = arduinoData.readline()
    dataArray = arduinoString.split(',')   
    xaxis = float( dataArray[0])            
    yaxis = float( dataArray[1])            
    zaxis = float( dataArray[2])    
    mag =float( dataArray[3])   
    x.append(xaxis)                     
    y.append(yaxis)                     
    z.append(zaxis) 
    magnitude.append(mag)
    drawnow(makeFig)
    count = count + 1

现在,在你找到一个好的解决方案之前,你必须了解一些事情。数据从arduino到达的速度有多快?drawnow的功能有多快?这些计时不在您的控制范围内,因此,如果数据到达的速度快于绘图例程可以执行的速度,则不可能执行您定义的任务。所有Python版本都有一个时间模块,函数time.time()以秒为单位返回当前时间。这可用于测量drawnow功能的速度。在更新绘图之前,可能需要缓存一块数据。每秒更新几次情节会给人一种实时的错觉,这可能已经足够好了

要查看图形打印的速度,请使用:

t = time.time()
drawnow()
print(time.time()-t)  # time in seconds

我现在如何使用time.time()来查找绘图速度?我还在同一窗口中使用了4个子绘图,我注意到当我注释掉除一个子绘图以外的所有绘图时,Arduino和绘图速度匹配。一旦我添加了其他子图,整体绘图就会变慢。你知道为什么吗?可能只有一个子图的图形足够快,可以跟上。