Wie zeichne ich in Echtzeit in einer while-Schleife mit matplotlib?

Ich versuche, mit OpenCV einige Daten von einer Kamera in Echtzeit zu zeichnen. Das Echtzeit-Plotten (mit matplotlib) scheint jedoch nicht zu funktionieren.

Ich habe das Problem in diesem einfachen Beispiel eingegrenzt:

fig = plt.figure()
plt.axis([0, 1000, 0, 1])

i = 0
x = list()
y = list()

while i < 1000:
    temp_y = np.random.random()
    x.append(i)
    y.append(temp_y)
    plt.scatter(i, temp_y)
    i += 1
    plt.show()

Ich würde erwarten, dass dieses Beispiel 1000 Punkte einzeln darstellt. Was tatsächlich passiert, ist, dass das Fenster mit dem ersten angezeigten Punkt erscheint (ok damit) und dann darauf wartet, dass die Schleife beendet wird, bevor sie den Rest des Diagramms ausfüllt.

Irgendwelche Gedanken, warum ich nicht sehe, dass Punkte einzeln ausgefüllt werden?

Antworten auf die Frage(10)

Ihre Antwort auf die Frage