2012-09-15 247 views
46

只是爲了好奇,我想知道如何在下面的代碼中執行此操作。我一直在尋找答案,但沒用。如何使用Python最大化plt.show()窗口

import numpy as np 
import matplotlib.pyplot as plt 
data=np.random.exponential(scale=180, size=10000) 
print ('el valor medio de la distribucion exponencial es: ') 
print np.average(data) 
plt.hist(data,bins=len(data)**0.5,normed=True, cumulative=True, facecolor='red', label='datos tamano paqutes acumulativa', alpha=0.5) 
plt.legend() 
plt.xlabel('algo') 
plt.ylabel('algo') 
plt.grid() 
plt.show() 

回答

23

我通常使用

mng = plt.get_current_fig_manager() 
mng.frame.Maximize(True) 

調用plt.show()之前,我得到了最大化的窗口。這隻適用於'wx'後端。

編輯:

爲Qt4Agg後臺,看到kwerenda的answer

+11

使用這個,我得到'mng.frame.Maximize(True) AttributeError:在Matplotlib 1.2.0 – Junuxx

+0

上面的作品在Windows上的圖形管理器實例沒有屬性'frame'',你在一臺Mac? – gg349

+2

不,我在Windows上。 – Junuxx

2

嘗試plt.figure(figsize=(6*3.13,4*3.13))使曲線更大。

3

按住f鍵(或ctrl+f在1.2rc1中)時,如果將焦點放在繪圖上,將全屏顯示繪圖窗口。不是最大化,但可能更好。除此之外,要實際最大化,您需要使用GUI Toolkit特定命令(如果它們存在於您的特定後端)。

HTH

+0

這解釋了我不小心撞到的那把鑰匙,我的窗戶被全部遮住了! (以及如何撤消它) – cxrodgers

1

嘗試使用 'Figure.set_size_inches' 的方法,用額外的關鍵字參數forward=True。根據documentation,這應該調整數字窗口。

其他實際上發生取決於您正在使用的操作系統。

26

這使得窗口占滿整個屏幕對我來說,Ubuntu的12.04下與TkAgg後端:

mng = plt.get_current_fig_manager() 
    mng.resize(*mng.window.maxsize()) 
+2

請注意,這對多監視器設置有奇怪的影響。該窗口將用盡所有顯示器,而不是最大化。 – user1202136

+0

這不會創建一個最大化的窗口(它應該捕捉到屏幕的邊緣),但會創建一個最大化窗口,其大小最大化。 – HelloGoodbye

+0

這也成功地最大化了Ubuntu 14.04中的窗口,並保持了我們都知道的按鈕的頂部欄。 – iamgin

39

有了Qt後端(FigureManagerQT)正確的命令是:

figManager = plt.get_current_fig_manager() 
figManager.window.showMaximized() 
14

這應該工作(在至少與TkAgg):

wm = plt.get_current_fig_manager() 
wm.window.state('zoomed') 

(通過上述和Using Tkinter, is there a way to get the usable screen size without visibly zooming a window?

+0

耶!這對我有效;它創建一個最大化的窗口,捕捉到屏幕邊緣,並具有最小化,最大化/還原和關閉按鈕,因爲它應該。 – HelloGoodbye

+1

但是,你的意思是說,這適用於'TkAgg',而不是'TkApp',對吧? – HelloGoodbye

+0

好趕上(可能是一個錯字)! TkAgg是Tk的後端。 – dinvlad

3

我也得到mng.frame.Maximize(True) AttributeError: FigureManagerTkAgg instance has no attribute 'frame'以及。

然後,我通過屬性mng有一看,我發現這一點:

mng.window.showMaximized() 

爲我工作。

因此對於有同樣問題的人,你可以試試這個。

順便說一句,我的Matplotlib版本是1.3.1。

+0

謝謝!這個解決方案適合我。在Redhat Enterprise Linux 6,python 2.7.10,matplotlib 1.4.3上運行。 – CrossEntropy

+0

我知道這會彈出一個全屏窗口,但是當我輸入'plt.show()'時,我的圖會出現在單獨的窗口中。不是在這個全屏窗口,任何建議? – StayFoolish

83

因爲我在零信譽我不會留下任何其他的標誌而不是新的答案 我在Windows(WIN7)上運行Python 2.7.5 & Matplotlib 1.3。1

我能夠使用以下行以最大化TkAgg,QT4Agg和wxAgg圖窗口:

from matplotlib import pyplot as plt 

### for 'TkAgg' backend 
plt.figure(1) 
plt.switch_backend('TkAgg') #TkAgg (instead Qt4Agg) 
print '#1 Backend:',plt.get_backend() 
plt.plot([1,2,6,4]) 
mng = plt.get_current_fig_manager() 
### works on Ubuntu??? >> did NOT working on windows 
# mng.resize(*mng.window.maxsize()) 
mng.window.state('zoomed') #works fine on Windows! 
plt.show() #close the figure to run the next section 

### for 'wxAgg' backend 
plt.figure(2) 
plt.switch_backend('wxAgg') 
print '#2 Backend:',plt.get_backend() 
plt.plot([1,2,6,4]) 
mng = plt.get_current_fig_manager() 
mng.frame.Maximize(True) 
plt.show() #close the figure to run the next section 

### for 'Qt4Agg' backend 
plt.figure(3) 
plt.switch_backend('QT4Agg') #default on my system 
print '#3 Backend:',plt.get_backend() 
plt.plot([1,2,6,4]) 
figManager = plt.get_current_fig_manager() 
figManager.window.showMaximized() 
plt.show() 

希望本發明內容合併在一個工作實施例中的以前的答案(和一些添加)的(在至少對於Windows)有幫助。 乾杯

+3

這應該是公認的答案 – fmonegaglia

+4

###在Ubuntu上工作? >>沒有在windows上工作 mng.resize(* mng.window.maxsize())在我的linux上完美的#works工作 – Daniele

+1

@Daniele,你的解決方案適用於Ubuntu上的TkAgg。謝謝!但是我花了一段時間來解析;)也許在「mng.resize ...」之前擺脫所有的東西。 – BenB

20

對於我來說,上述任何工作。我在Ubuntu 14.04上使用了包含matplotlib 1.3.1的Tk後端。

下面的代碼創建一個全屏窗口的情節是不一樣的最大化,但它很好地服務我的目的:

from matplotlib import pyplot as plt 
mng = plt.get_current_fig_manager() 
mng.full_screen_toggle() 
plt.show() 
+0

這也是爲我工作的解決方案(雖然它進入全屏,而不是最大化的窗口)。在Redhat Enterprise Linux 6,python 2.7.10,matplotlib 1.4.3上運行。 – CrossEntropy

+1

在Windows 10 x64,python 3.5的Visual Studio 2015中爲我工作,除了我無法訪問窗口邊框來關閉圖形,因爲它位於頂部屏幕像素之上。 –

+1

對我來說,這並不會創建最大化的窗口,而是全屏窗口。我沒有得到任何最小化,最大化/還原下來和關閉按鈕,因爲正常的窗戶,我不得不右鍵單擊任務欄上的窗口可以關閉它。 – HelloGoodbye

0

這並不一定最大化窗口,但它確實調整窗口的大小按比例該圖形的大小:

from matplotlib import pyplot as plt 
F = gcf() 
Size = F.get_size_inches() 
F.set_size_inches(Size[0]*2, Size[1]*2, forward=True)#Set forward to True to resize window along with plot in figure. 
plt.show() #or plt.imshow(z_array) if using an animation, where z_array is a matrix or numpy array 

這也可能有助於:http://matplotlib.1069221.n5.nabble.com/Resizing-figure-windows-td11424.html

0

下可以與所有的後端工作,但我只在QT上測試過它:

import numpy as np 
import matplotlib.pyplot as plt 
import time 

plt.switch_backend('QT4Agg') #default on my system 
print('Backend: {}'.format(plt.get_backend())) 

fig = plt.figure() 
ax = fig.add_axes([0,0, 1,1]) 
ax.axis([0,10, 0,10]) 
ax.plot(5, 5, 'ro') 

mng = plt._pylab_helpers.Gcf.figs.get(fig.number, None) 

mng.window.showMaximized() #maximize the figure 
time.sleep(3) 
mng.window.showMinimized() #minimize the figure 
time.sleep(3) 
mng.window.showNormal() #normal figure 
time.sleep(3) 
mng.window.hide() #hide the figure 
time.sleep(3) 
fig.show() #show the previously hidden figure 

ax.plot(6,6, 'bo') #just to check that everything is ok 
plt.show() 
0

好的,所以這是對我有用的。我做了整個showMaximize()選項,它會根據圖形的大小調整窗口的大小,但不會展開和「適合」畫布。我解決了這個由:

mng = plt.get_current_fig_manager()           
mng.window.showMaximized() 
plt.tight_layout()  
plt.savefig('Images/SAVES_PIC_AS_PDF.pdf') 

plt.show() 
2

這是一種哈克和可能不是便攜式的,只有當你正在尋找快速和骯髒的使用它。如果我只是將這個數字設置得比屏幕大得多,它就會佔用整個屏幕。

fig = figure(figsize=(80, 60)) 

事實上,在Ubuntu 16.04與Qt4Agg,這將窗口最大化(不是全屏),如果它比屏幕大。 (如果你有兩臺顯示器,它只是在其中一臺顯示器上最大化)。

+0

適合我!正如我試圖獲得屏幕的大小。 – StayFoolish