Zweidimensionale innere Liste durchlaufen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
NWA
User
Beiträge: 49
Registriert: Mittwoch 3. Februar 2021, 11:40

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.
NWA
User
Beiträge: 49
Registriert: Mittwoch 3. Februar 2021, 11:40

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:

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 = y
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.
Antworten