Wie erreicht man mit Matplotlib nicht blockierendes Plotten?

Linda Hamilton
Freigeben: 2024-11-02 14:17:30
Original
784 Leute haben es durchsucht

How to Achieve Non-Blocking Plotting with Matplotlib?

Fehlerbehebung beim nicht blockierenden Plotten mit Matplotlib

Die blockierende Natur von Matplotlib kann die Echtzeit-Datenvisualisierung behindern. In diesem Artikel werden Lösungen zur Behebung dieses Problems anhand eines Beispiels aus der ursprünglichen Anfrage untersucht.

Das Problem: Qt4Agg-Backend-Probleme

Der ursprüngliche Code verwendete Qt4Agg als Backend, was bekanntermaßen auftritt Einschränkungen bei der nicht blockierenden Ausführung. Die Verwendung von show(block=False) kann zu einem eingefrorenen Fenster führen, da Qt4Agg diese Funktionalität nicht unterstützt.

Die Lösung: Interaktiver Modus und Pause

Um nicht blockierendes Plotten mit Matplotlib zu erreichen, zwei Wichtige Schritte sind von entscheidender Bedeutung:

  1. Aktivieren Sie den interaktiven Modus mit plt.ion(), wodurch matplotlib auf GUI-Ereignisse reagieren kann, während Ihr Code weiter ausgeführt wird.
  2. Rufen Sie plt.pause( time) (z. B. plt.pause(0.001) wie in der bereitgestellten Lösung), um der GUI Zeit zu geben, Ereignisse zu verarbeiten, einschließlich der Neuzeichnung Ihres Plots.

Aktualisierter Code

Hier ist der aktualisierte Code, der diese Lösungen enthält:

<code class="python">import numpy as np
from matplotlib import pyplot as plt

def main():
    plt.axis([-50,50,0,10000])
    plt.ion()
    plt.show()

    x = np.arange(-50, 51)
    for pow in range(1,5):   # plot x^1, x^2, ..., x^4
        y = [Xi**pow for Xi in x]
        plt.plot(x, y)
        plt.draw()
        plt.pause(0.001)
        input("Press [enter] to continue.")

if __name__ == '__main__':
    main()</code>
Nach dem Login kopieren

Mit diesem Code können Sie den vorhandenen Plot auf nicht blockierende Weise aktualisieren und so ein nahtloses und reaktionsfähiges Visualisierungserlebnis bieten.

Das obige ist der detaillierte Inhalt vonWie erreicht man mit Matplotlib nicht blockierendes Plotten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!