2016-11-04 5 views
3

Ich habe über eine Stunde lang gesucht, nur um diese einfache Sache zu verstehen. Bevor Sie also eine doppelte Frage betrachten, vergleichen Sie bitte meine Frage mit irgendeiner Frage da draußen.Python MatPlotlib-Eine Figur schließen - PyCharm

Dies ist mein Code:

import pandas 
import matplotlib.pyplot as plt 

dataset = pandas.read_csv('international-airline-passengers.csv', usecols=[1], engine='python', skipfooter=1) 
print dataset, type(dataset) 
plt.plot(dataset) 
plt.show() 
plt.close() 

Erstens plt.show() mein Verständnis ist eine Sperrfunktion. Also, wie schließt man die Figur? Es hat keinen Sinn, plt.close() danach zu schreiben. Wo also ist der richtige Weg?

Zweitens, wie kann ich sicherstellen, dass alle Fenster geschlossen sind, wenn ich einen neuen Prozess des gleichen Python-Codes ausführen. Zum Beispiel könnte man in MATLAB sagen, dass alle am Anfang ihrer Datei schließen und alle geöffneten Plots schließen, die das Ergebnis der vorherigen MATLAB-Codeausführung waren. plt.close('all') funktioniert auch nicht.

Ich verwende PyCharm. Die Ergebnisse, die ich für die erste Situation gefunden habe, könnten bei IDLE funktionieren, aber nicht bei PyCharm. Wie kann ich es pyCharm tun?

Antwort

0

Es gibt zwei Möglichkeiten, um matplotlib zu starten, nicht interaktiv und interaktiv. Im nicht interaktiven Modus, der Standard, haben Sie Recht, dass plt.show() blockiert. In diesem Fall ist der Aufruf von plt.close() sinnlos, der Code wird nicht anhalten, solange die Zahl geöffnet ist. Im interaktiven Modus jedoch (der durch plt.ion() ausgelöst werden kann), öffnet sich dieser Code und schließt dann sofort die Figur. Sie müssen etwas auf Benutzereingabe warten, wenn Sie Code wie diesen in einem Skript ausführen. Der interaktive Modus ist, wie der Name schon sagt, eher interaktiv als in einem Skript ausgeführt.

Zum Schließen von Zahlen aus mehreren Läufen eines Python-Skripts ist dies nicht möglich. Wenn Sie mehrere Instanzen von MATLAB öffnen, werden close all in einer Instanz die Zahlen in einer anderen Instanz nicht schließen. Das Ausführen mehrerer Prozesse mit demselben Python-Code ist mit dem Öffnen mehrerer Instanzen von MATLAB identisch, ein Lauf hat keine Kenntnis von den anderen.

+0

Kann ich falsch das Wort Prozess verwendet werden. In MATLAB, wenn Sie alle Zeilen oberhalb des Codes schließen. Führen Sie den Code aus - wodurch eine Figur geöffnet wird. Führen Sie den Code erneut aus, die geöffnete Figur wird geschlossen. Kann ich das in Python nicht? Ich öffne nicht mehrere Instanzen von MATLAB hier. Gleiche Instanz, die denselben Code zweimal ausführt. –

+0

@JeshKundem Richtig, aber wenn Sie ein Python-Skript mehrmals ausführen, öffnen Sie mehrere Instanzen von Python. Mein Punkt ist, dass das Ausführen eines Python-Skripts mehrere Male entspricht, um ein MATLAB-Skript in separaten MATLAB-Instanzen auszuführen. Wenn Sie denselben Code mehrmals in der gleichen Python-Instanz ausführen möchten, sollten Sie eine Funktion und kein Skript verwenden und sie von einer Python-Shell aus ausführen. Oder besser noch verwenden Sie etwas wie das ipython/jupyter Notebook, um alle Ihre Code und Zahlen organisiert zu halten. – TheBlackCat