2016-11-04 27 views
3

私はこの単純なことを理解するのに1時間以上の時間を費やしました。だから、これを重複した質問と考える前に、私の質問をそこにある質問と比較してください。Python MatPlotlib - 図を閉じる - PyCharm

これは私のコードです:

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() 

はまず、私の理解へplt.show()は、ブロッキング機能です。それでは、図を閉じる方法は何ですか。そのあとにplt.close()を書いても意味がありません。だから、それを置く正しい方法はどこにありますか?

第2に、同じPythonコードの新しいプロセスを実行すると、すべてのウィンドウが閉じていることを確認するにはどうすればよいですか。たとえば、MATLABでは、ファイルの先頭にすべて閉じると簡単に言うことができ、以前のMATLABコード実行の結果であったすべての開いたプロットを閉じます。 plt.close('all')も機能しません。

私はPyCharmを使用しています。私が最初の状況で見つけた結果は、IDLEでは動作しますが、PyCharmでは動作しませんでした。どうすればpyCharmを行うことができますか?

答えて

0

matplotlibを実行するには、非対話型と対話型の2つの方法があります。非対話モードでは、デフォルトでは、あなたは正しく、plt.show()がブロックしています。この場合、plt.close()を呼び出すのは無意味です。数字が開いている限り、コードは停止しません。ただし、対話モード(plt.ion()によってトリガーされる可能性があります)では、このコードが開き、すぐに図が閉じます。このようなコードをスクリプトで実行する場合は、ユーザーの入力を待つために何かを置く必要があります。対話型モードは、名前が意味するように、スクリプトではなくインタラクティブに実行するように設計されています。

pythonスクリプトを複数回実行したときの数字を閉じることはできません。 MATLABの複数のインスタンスを開くと、あるインスタンス内のclose allは別のインスタンスの数値を閉じません。同じPythonコードの複数のプロセスを実行することは、MATLABの複数のインスタンスを開くことと同じです.1つの実行では、他のプロセスについての知識がありません。

+0

私は間違って単語のプロセスを使用することがあります。 MATLABでは、コードの上にすべての行が閉じているとします。コードを実行すると、図が開きます。コードをもう一度実行すると、開いていた図が閉じられます。私がPythonでそれを行う方法はありませんか?私はここでMATLABの複数のインスタンスを開いていません。同じコードを2回実行する同じインスタンス。 –

+0

@ JeshKundemそうですが、Pythonスクリプトを複数回実行すると、複数のPythonインスタンスが開きます。ですから、私の主張は、Pythonスクリプトを複数回実行することは、別々のMATLABインスタンスでMATLABスクリプトを実行することと同じです。 Pythonの同じインスタンスで同じコードを複数回実行する場合は、スクリプトではなく関数を使用する必要があります。また、Pythonシェルから実行する必要があります。あるいは、ipython/jupyterノートブックのようなものを使ってコードや図を整理しておくのがよいでしょう。 – TheBlackCat

関連する問題