Ich versuche, eine Echtzeit-Plot mit pyqtgraph zu tun. Ich lese die Daten von und Arduino mit Pyserial. Ich habe die matplotlib-Bibliothek ausprobiert, bevor ich pyqtgraph benutzte, aber es gab mir nicht die Geschwindigkeit, die ich plotten musste. Also, auf der Suche nach anderen Möglichkeiten, Live-Daten zu zeichnen, habe ich PyQtgraph getroffen. Ich lese die Dokumentation und viele Beispiele, und ich habe diese beiden Beispiele gefunden:Plotten in der Zeit mit PyQtGraph und Pyserial
Beide sind gezeichnet als Funktion der Zeit, das ist, was ich tun muss. Ich habe jeden von ihnen geändert, um die Daten vom Arduino mit Pyserial zu erhalten. Das Prolem ist, dass es immer noch sehr langsam zeichnet.
Dies ist der Code (aus dem zweiten Link) Ich bin mit:
class TimeAxisItem(pg.AxisItem):
def __init__(self, *args, **kwargs):
super(TimeAxisItem, self).__init__(*args, **kwargs)
def tickStrings(self, values, scale, spacing):
return [QTime().addMSecs(value).toString('mm:ss') for value in values]
class MyApplication(QtGui.QApplication):
def __init__(self, *args, **kwargs):
super(MyApplication, self).__init__(*args, **kwargs)
self.t = QTime()
self.t.start()
self.data = deque(maxlen=20)
self.win = pg.GraphicsWindow(title="Basic plotting examples")
self.win.resize(1000,600)
self.plot = self.win.addPlot(title='Timed data', axisItems={'bottom': TimeAxisItem(orientation='bottom')})
self.curve = self.plot.plot()
self.tmr = QTimer()
self.tmr.timeout.connect(self.update)
self.tmr.start(100)
print "Opening port"
self.raw=serial.Serial("com4",9600)
print "Port is open"
def update(self):
line = self.raw.read()
ardString = map(ord, line)
for number in ardString:
numb = float(number/77.57)
print numb
self.data.append({'x': self.t.elapsed(), 'y': numb})
x = [item['x'] for item in self.data]
y = [item['y'] for item in self.data]
self.curve.setData(x=x, y=y)
def main():
app = MyApplication(sys.argv)
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Was kann ich schneller im Laufe der Zeit zeichnen tue Es scheint, dass ich mit diesem Code einige Daten bin zu verlieren?.
Wirklich hoffe, dass Sie mir helfen können.
Mit dem [Python Profiler] (https://docs.python.org/2/library/profile.html) können Sie untersuchen, welche Funktionen die meiste Ausführungszeit benötigen. Ich empfehle Ihnen wirklich, es auszuprobieren. – titusjan