while loop funktioniert nicht mit matplotlib

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Lardos
User
Beiträge: 2
Registriert: Dienstag 22. Januar 2019, 18:23

Hallo zusammen,

Ich stehe momentan vor dem Problem, dass ich nicht weiß, wie Matplotlib seine Update funktion benutzt.
Hier ein einfaches Beispiel für einen simplen plot:

Code: Alles auswählen

import matplotlib
import matplotlib.pyplot as plt
import numpy as np

# Data for plotting
t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2 * np.pi * t)

i=0

while(i<10):
    i=i+1
    print("hello")
    fig, ax = plt.subplots()

    ax.plot(t, s)

    ax.set(xlabel='time (s)', ylabel='voltage (mV)',
        title='About as simple as it gets, folks')
    ax.grid()

    plt.show()
Eigentlich würde ich erwarten, dass mir in der Konsole 10 mal "hello" ausgegeben wird. Da tut sich aber nichts. Erst wenn ich das Matplot Fenster schließe öffnet sich ein neues und das zweite "hello" wird ausgegeben. Anscheinend durchläuft Matplotlib pro geöffnetem Fenster nur 1 mal den while loop. Als ob das Programm einfriert und erst weiter macht, wenn man es schließt. Woran liegt das?

Mein Ziel ist es dass ich meinen Plot dynamisch verändern kann während das Programm läuft. Ich habe gelesen, dass die plt.pause() Funktion hier helfen soll, aber wenn ich die Funktion benutze wird mir nach wie vor nur ein "hello" pro Fenster angegeben.

Danke im Voraus!

Liebe Grüße,
Luca
Benutzeravatar
__blackjack__
User
Beiträge: 13006
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Lardos: `show()` blockiert halt. Schau Die mal die Beispiele in der Dokumentation/Gallerie an wie man Animationen mit Matplotlib macht.

Die Klammern bei ``while`` gehören da übrigens nicht hin. Das ist keine Funktion und man muss auch keine unnötigen Klammern um einen kompletten Ausdruck setzen. Zudem wäre das eher ein Fall für eine ``for``-Schleife wenn man vorher weiss wie oft eine Schleife durchlaufen werden soll.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Antworten