2016-11-04 38 views
3

我花了一個多小時的搜索,只是爲了找到這個簡單的東西。所以,在考慮這個重複的問題之前,請將我的問題與那裏的任何問題進行比較。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()沒有意義。那麼把它放在哪裏是正確的。

其次,我怎樣才能確保所有窗口關閉,當我執行一個新的進程相同的Python代碼。例如在MATLAB中,可以輕鬆地在文件的開始處關閉所有文件,並關閉之前MATLAB代碼執行結果的所有打開的圖。 plt.close('all')也無法正常工作。

我正在使用PyCharm。我發現第一種情況的結果可能適用於IDLE,但不適用於PyCharm。我該怎麼做pyCharm。

回答

0

有兩種方式可以運行matplotlib,非交互式和交互式。在非交互模式下,默認情況下,您正確的阻止了plt.show()。在這種情況下,調用plt.close()是毫無意義的,只要該圖打開,代碼就不會停止。然而,在交互模式下(可以觸發plt.ion()),此代碼將打開,然後立即關閉該數字。如果你在腳本中運行這樣的代碼,你需要放些東西來等待用戶輸入。正如其名稱所暗示的,交互式模式的設計更多是爲了交互式運行而不是腳本。

至於關閉python腳本多次運行的數字,這是不可能的。如果您打開多個MATLAB實例,則在一個實例中,close all將不會在另一個實例中關閉數字。運行相同python代碼的多個進程與打開MATLAB的多個實例相同,一次運行沒有其他的知識。

+0

可能是我錯誤地使用了這個詞的過程。在MATLAB中,如果在代碼頂部有一條緊密的所有行。運行代碼 - 打開一個數字。再次運行代碼,打開的數字被關閉。我有沒有辦法在Python中做到這一點?這裏我不打開MATLAB的多個實例。同一個實例運行相同的代碼兩次。 –

+0

@JeshKundem對,但是如果你多次運行一個python腳本,你會打開多個python實例。所以我的觀點是,多次運行python腳本就相當於在單獨的MATLAB實例中運行MATLAB腳本。如果你想在同一個python實例中多次運行相同的代碼,你應該使用一個函數,而不是腳本,你應該從python shell運行它。或者更好的辦法是使用像ipython/jupyter筆記本這樣的東西來保持所有的代碼和數據的組織。 – TheBlackCat