Hallo,
ich benutze Python für die Auswertung von Messdaten und möchte diese dynamisch anzeigen lassen. Jetzt hab ich mir dazu matplotlib bzw. animation angeschaut. Das Problem dabei ist das die Daten schneller kommen wie das sie gezeichnet werden. Jetzt wollte ich fragen ob es möglich ist in einen bestehenden Graphen einfach einen weiteren einzufügen.
Z.b. ich zeichne erst eine gerade linie von 0-1, und eine Sekunde später eine weitere Linie von 1-2
Sprich das er nicht über die einzelnen Werte iteriert sondern den kompletten Graphen einfügt.
Gruß
Frage zu Matplotlib
- Sr4l
- User
- Beiträge: 1091
- Registriert: Donnerstag 28. Dezember 2006, 20:02
- Wohnort: Kassel
- Kontaktdaten:
Dem kann ich irgendwie nicht ganz folgen. Die Daten kommen zuschnell und dann soll ein weiterer Graph helfen?Krol hat geschrieben:Das Problem dabei ist das die Daten schneller kommen wie das sie gezeichnet werden. Jetzt wollte ich fragen ob es möglich ist in einen bestehenden Graphen einfach einen weiteren einzufügen.
Zeig mal wie du es genau machst. ich hatte mich vor Kurzem mit dem gleichen Thema beschäftige. Habe das Problem, aber nur quick and dirty gelöst. Es friert halt sehr schnell ein wenn man irgendwas klickt, aber für mich war das erstmal so okay. Man muss sich wohl mit einem GUI Toolkit behelfen um das Problem zu beheben.
Habe es so gemacht, läuft bei mir mit etwa 25FPS
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from collections import deque
from random import randint
from matplotlib import pylab
pylab.ion()
class MatplotlibGraph(object):
def __init__(self, scale=0.1, min_value=0, max_value=1):
self.x = pylab.arange(0, 10, scale)
self.data = deque([0 for _ in xrange(len(self.x))])
self.data[0] = min_value
self.data[1] = max_value
self.line, = pylab.plot(self.x, self.data)
def add_data(self, value):
self.data.append(value)
self.data.popleft()
self.line.set_ydata(self.data)
pylab.draw()
plot = MatplotlibGraph(0.1, -1000, 1000)
for i in xrange(1000):
plot.add_data(randint(-i,i))
Habs im Grunde genommen auch so gemacht, nur das ich bei mir noch die Grenzen der x-Achse verschiebe.
Sag mal, hast du auch das Problem das man nachdem die Daten geplottet wurden den Graphen nicht mehr anklicken kann? Bei dem Beispiel von dir geht das ja auch nicht.
Sag mal, hast du auch das Problem das man nachdem die Daten geplottet wurden den Graphen nicht mehr anklicken kann? Bei dem Beispiel von dir geht das ja auch nicht.