Ich habe den Eindruck, als wenn man mir viel zu viel helfen möchte. Ich möchte nur schnell meine grosse Liste meinem Diagramm übergeben. Gibt es dafür "eine effizienteste Lösung"?
Für mich ist die beste Lösung bisher die Liste zur Laufzeit zu modifizieren. Ich werde in einem späteres Schritt auch Zeitmessungen vornehmen, um das zu überprüfen.
Ansonsten wurde mir aber hier schon geholfen, in dem ich mich auf obige Lösung konzentrieren kann.
Zweidimensionale innere Liste durchlaufen
Ich melde mich mal mit einer vorläufigen Lösung zurück, welche die vorzuhaltende Grösse der Liste minimiert.
Laut allermöglichen Dokus muss ich matplotlib eine Liste mit anzuzeigenden Werten übergeben. Möchte ich ein laufendes Diagramm (mit Live-Werten, welche asynchron reinkommen), dann müsste diese Liste jedesmal angepasst werden.
Was ich aber nach viel Arbeit herausfand: matplotlib merkt sich die alten Verläufe. Auf diese Weise muss man bei jedem Durchlauf nur zwei Punkte angeben (einen alten und einen neuen), welche an den alten Verlauf drangehängt werden. Das sieht als Programm ungefähr so aus:
Mit einer sehr kurzen pause wird das ganze ereignisgesteuert. Wär schön wenn man auf die pause() irgendwie verzichten könnte...
Hoffentlich ist das obige eine nicht schon allzu bekannte Info. Aber vielleicht hat jemand Ideen zu den beiden oben kommentierten Problemen.
Laut allermöglichen Dokus muss ich matplotlib eine Liste mit anzuzeigenden Werten übergeben. Möchte ich ein laufendes Diagramm (mit Live-Werten, welche asynchron reinkommen), dann müsste diese Liste jedesmal angepasst werden.
Was ich aber nach viel Arbeit herausfand: matplotlib merkt sich die alten Verläufe. Auf diese Weise muss man bei jedem Durchlauf nur zwei Punkte angeben (einen alten und einen neuen), welche an den alten Verlauf drangehängt werden. Das sieht als Programm ungefähr so aus:
Code: Alles auswählen
self.Diagrammzeit = 45000 # [ms] anzuzeigende Zeit auf x-Achse
def diagramm(self, x, y):
if self.x_old != 0:
plt.xlim(x - self.Diagrammzeit, x)
# plt.ylim(0.0 , 110000.0) # [b]Wenn aktiv, dann wird kein Graph angezeigt![/b]
plt.xlabel('Zeit')
# plt.legend() #[b] Wenn aktiv, dann wird eine neue Legende an die alte drangehängt![/b]
plt.step([self.x_old, x], [self.y_old, y], color='r', label ='Wert A')
plt.pause(0.0000000000000001)
self.x_old = x
self.y_old = yHoffentlich ist das obige eine nicht schon allzu bekannte Info. Aber vielleicht hat jemand Ideen zu den beiden oben kommentierten Problemen.
