matplotlib Figuren verschwinden zwischen show () und savefig ()

8

Ich habe eine Reihe von Verweisen auf Zahlen in einem Wörterbuch gespeichert, damit ich sie später speichern kann, falls gewünscht. Ich bin besorgt, dass die gespeicherten Zahlen leer sind, wenn Sie einen show() -Befehl aufrufen und sie zuerst betrachten. Da der Befehl show() blockiert und ich keinen spyderartigen Interpreter verwende, muss ich die Zahlen schließen, bevor ich zu savefig()

komme %Vor%

Die print-Anweisung hat mir den Hinweis gegeben, dass das Wörterbuch noch intakt ist, was bedeutet, dass ich die Zahlenreferenzen nicht verloren habe (sie geben immer noch aussagekräftige Zahlen in ihrem .number -Attribut zurück.)

Eine andere Wendung, die ich bemerkt habe, ist, dass wenn ich eine ähnliche Sache in einer Klasse gemacht habe, das Wörterbuch als Mitglied gespeichert habe und die Speicher- und Speicherfunktionen in ihre eigenen Methoden aufgeteilt habe, geschieht dies nicht. Gibt es etwas über die Art, wie ich die Zahlen schließe oder die Daten speichere, die dazu führen, dass die Zahlen ihre Daten verlieren?

    
2NinerRomeo 16.05.2011, 15:38
quelle

2 Antworten

2

Von der Dokumentation hängt es ab, ob die Zeichnungselemente von show() zerstört werden oder nicht auf dem Back-End und der Version von matplotlib. Die Zahlen nicht zerstört zu haben scheint mit der Version 1.1.0 verfügbar zu sein. Um herauszufinden, welches Backend verwendet wird , verwenden Sie die Funktion get_backend() . In meinem Fall benutzte ich das Qt4Agg-Backend. Beim Aufruf des TkAgg-Backends mit dem Aufruf matplotlib.use('TkAgg') wurden die Werte vor dem Speichern nicht zerstört. Jetzt erfahren Sie, wie Sie das Verhalten von Qt4Agg ändern können ...

    
2NinerRomeo 16.05.2011, 23:39
quelle
7

Im Allgemeinen verwenden Sie in solchen Fällen nicht die interaktive Matlab-ische Zustandsmaschine-Schnittstelle zu matplotlib. Es ist für den interaktiven Gebrauch gedacht.

Sie versuchen, eine Figur "aktiv" zu machen und stattdessen eine neue Figur zu erstellen. Es spielt keine Rolle, welche Figur aktiv ist, wenn Sie nur die zurückgegebenen Figur- und / oder Achsenobjekte behalten und diese direkt verwenden. (Verwenden Sie keine Platzhalterimporte! Sie bedauern dies zu einem späteren Zeitpunkt, wenn Sie Ihren Code beibehalten!)

Mach einfach so etwas:

%Vor%     
Joe Kington 16.05.2011 16:22
quelle

Tags und Links