Les Données En Direct Monitor: PyQtGraph
Je suis en train de travailler sur un projet où je dois analyser les signaux en provenance d'un appareil. J'ai une bibliothèque de travail qui me récupère les données de l'appareil. Pour l'instant, je suis à la collecte de données, puis de les tracer. Je suis intéressée par la construction d'un vivre données moniteur qui peut tracer un graphique en temps réel. Sur la recherche, j'ai compris PyQtGraph est idéal pour la tâche. Je ne suis pas familier avec Qt, je suis à la recherche pour les exemples qui je peux modifier à mes besoins. Certains des exemples donnés dans PyQtGraph docs mise à jour de l'intrigue en temps réel, MAIS j'ai besoin de quelque chose comme un moniteur live - lorsque le graphe est en mouvement vers la droite, comme il continue à recevoir des données.
Si quelque chose comme connu une fonction continue, je peux mettre à jour l'entrée x - w*t
avec t
être le temps de façon à obtenir la vague se déplaçant vers la droite. Mais c'est discret données, donc je ne suis pas sûr de savoir comment le faire fonctionner à l'aide de PyQtGraph. Donc, ce serait formidable si quelqu'un pouvait donner quelques conseils sur la façon d'aller à ce sujet.
Comme de maintenant, c'est ce que j'ai
Code
app = QtGui.QApplication([])
#mw = QtGui.QMainWindow()
#mw.resize(800,800)
win = pg.GraphicsWindow(title="Basic plotting examples")
win.resize(1000,600)
win.setWindowTitle('pyqtgraph example: Plotting')
# Enable antialiasing for prettier plots
pg.setConfigOptions(antialias=True)
p6 = win.addPlot(title="Updating plot")
curve = p6.plot(pen='r')
X_axis = numpy.linspace(0,100,12800)
#'data' is my required y_axis containing 12800 values
ydata = np.array_split(data,50)
xdata = np.array_split(X_axis,50)
ptr = 0
def update():
global curve, data, ptr, p6
curve.setData(xdata[ptr%50],ydata[ptr%50])
ptr += 1
timer = QtCore.QTimer()
timer.timeout.connect(update)
timer.start(1000)
C'est la mise à jour des données pour chaque 2 seconde d'intervalle, mais je veux que ça se déplacer vers la droite.
OriginalL'auteur user1955184 | 2014-06-13
Vous devez vous connecter pour publier un commentaire.
Faire un terrain de défilement, vous disposez de trois options:
Faire défiler les données brutes et de re-tracer (voir numpy.rouleau)
Déplacer le tracé de la courbe de sorte qu'elle glisse à travers le point de vue:
Déplacer le point de vue de la région, tels que le tracé de la courbe s'affiche pour faire défiler
La le défilement de parcelles exemple (actuellement seulement dans la version de développement) illustre chacune de ces:
setLimits n'est disponible que dans la version de développement.
Le déplacement de l'intrigue semble bien fonctionner,mais l'axe des Y semble réglage automatique de la gamme de façon erratique. Donc il semble que le graphique est glissant de haut en bas. J'ai essayé d'utiliser setYRange mais le problème est que, le graphique devient trop petite et concis,il n'a pas l'air bon et les petites variations ne peuvent pas être vu clairement. Est-il possible où je peux obtenir le meilleur des deux mondes?
Serait définition d'un plus petit Y résoudre ce problème?
Disons que j'ai la valeur minimale de 1850 et la valeur maximale de 2500. Mon seYRange est de 1800 à 2500. La plupart de mes données est en 2300-2400 de la plage de données, mais parfois il va de 2200s et une fois qu'il va à 1850. Donc, mon graphique de l'axe des Y est divisé en 7 régions (à partir de 1800-2500). Et le graphique surtout réside uniquement dans le 2300-2400 région-ce qui lui donne une apparence très petit. L'axe de l'intervalle est de 100 unités. Est-il possible de le rendre un peu plus petite que 25 unités? C'est au lieu de 2000-2100-2200,je veux 2000-2025-2050...
OriginalL'auteur Luke