Heim >Backend-Entwicklung >Python-Tutorial >Wie erreicht man Echtzeit-Plots in einer Matplotlib-While-Schleife?

Wie erreicht man Echtzeit-Plots in einer Matplotlib-While-Schleife?

DDD
DDDOriginal
2024-12-06 04:33:171028Durchsuche

How to Achieve Real-Time Plotting in a Matplotlib While Loop?

Echtzeitplotierung in einer While-Schleife mit Matplotlib

In dieser Frage versucht der Benutzer, Daten in Echtzeit mit OpenCV und zu zeichnen matplotlib. Allerdings funktioniert die Echtzeitdarstellung nicht wie vorgesehen. Der Benutzer liefert ein vereinfachtes Beispiel, bei dem der Plot die Punkte nicht einzeln auffüllt, sondern stattdessen wartet, bis die Schleife beendet ist.

Um dieses Problem zu beheben, müssen wir verstehen, wie Matplotlib Plots in Echtzeit aktualisiert. Standardmäßig erwartet matplotlib einen Funktionsaufruf von plt.show(), um den Plot anzuzeigen und dann zu blockieren, bis das Plotfenster geschlossen wird. Dieses Verhalten verhindert, dass die Daten in Echtzeit dargestellt werden.

Die Lösung besteht darin, die Funktion plt.pause() zu verwenden. plt.pause(0.05) zeichnet die neuen Daten, führt die Ereignisschleife der GUI aus und hält die Darstellung für 0,05 Sekunden an. Dadurch kann die Darstellung in Echtzeit aktualisiert werden und auf Mausinteraktionen reagieren.

Hier ist der geänderte Code, der erfolgreich 10 Punkte in Echtzeit darstellt:

import numpy as np
import matplotlib.pyplot as plt

plt.axis([0, 10, 0, 1])

for i in range(10):
    y = np.random.random()
    plt.scatter(i, y)
    plt.pause(0.05)

plt.show()

Mit dieser Anpassung wird die Darstellung aktualisiert Zeigen Sie jetzt jeden Punkt an, während er generiert wird, und ermöglichen Sie so eine Echtzeitvisualisierung.

Das obige ist der detaillierte Inhalt vonWie erreicht man Echtzeit-Plots in einer Matplotlib-While-Schleife?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn