¿Cómo trazar dos datos en tiempo real en un solo gráfico en PyQtGraph?

Estoy dispuesto a obtener 2 datos aleatorios y trazarlos en el mismo Widget utilizando PyQtGraph en tiempo real. Quiero que aparezcan como puntos rojos y azules. Sin embargo, después de un tiempo difícil, mi script no funciona.

Me gustaría saber qué puedo hacer para obtener ambos datos en la misma gráfica.

Sé que es una pregunta tonta. Soy un principiante en Python y encoding.

Aquí está mi código:

#-*- coding: utf-8 -*- import random import time from collections import deque import pyqtgraph as pg from pyqtgraph.Qt import QtCore, QtGui import numpy as np import os import spidev win = pg.GraphicsWindow() win.setWindowTitle('DOTS') p1 = win.addPlot() p1.setRange(yRange=[0,25]) p1.setRange(xRange=[0,25]) curve1 = p1.plot() nsamples=300 #Number of lines for the data dataRed= np.zeros((nsamples,2),float) #Matrix for the Red dots dataBlue=np.zeros((nsamples,2),float) #Matrix for the Blue dots def getData(): global dataRed, dataBlue t0= random.uniform(1.6,20.5) #Acquiring Data d0= random.uniform(1.6,20.5) #Acquiring Data vec=(t0, d0) dataRed[:-1] = dataRed[1:] dataRed[-1]=np.array(vec) t0= random.uniform(1.6,20.5) #Acquiring Data d0= random.uniform(1.6,20.5) #Acquiring Data vec=(t0, d0) dataBlue[:-1] = dataBlue[1:] dataBlue[-1]=np.array(vec) def plot(): #Blue Dots curve1.setData(dataBlue, pen=None, symbol='o', symbolPen=None, symbolSize=4, symbolBrush=('b')) #Red Dots curve1.setData(dataRed, pen=None, symbol='o', symbolPen=None, symbolSize=4, symbolBrush=('r')) def update(): getData() plot() timer = pg.QtCore.QTimer() timer.timeout.connect(update) timer.start(50) ## Start Qt event loop unless running in interactive mode or using pyside. if __name__ == '__main__': import sys if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'): QtGui.QApplication.instance().exec_()# -*- coding: utf-8 -*- 

Realmente agradecería su ayuda.

Si bien pyqtgraph es un gran paquete desde una perspectiva de funcionalidad, desafortunadamente, la documentación no está presente, y realmente solo tiene que profundizar en el código y comenzar a entender la estructura de los objetos.

Cuando usted llama:

 p1 = win.addPlot() 

Esto devuelve una referencia a un PlotItem, en cuyo punto ahora puede agregar múltiples PlotDataItems a este objeto p1 (vea el diagtwig de estructura semi-útil aquí: http://www.pyqtgraph.org/documentation/plotting.html#organization-of- clases de trazado

Así que cuando llamas:

 curve1 = p1.plot() 

Esto agrega PlotDataItem # 1, … ahora necesita volver a llamar para obtener una segunda referencia para usar:

 curve2 = p1.plot() 

Esto se convierte en PlotDataItem # 2, que luego puede usar para el segundo método setData en su método plot () para llamar durante la actualización (). Que se vería como:

 def plot(): #Blue Dots curve1.setData(dataBlue, pen=None, symbol='o', symbolPen=None, symbolSize=4, symbolBrush=('b')) #Red Dots curve2.setData(dataRed, pen=None, symbol='o', symbolPen=None, symbolSize=4, symbolBrush=('r'))