2012-09-15 343 views
46

Solo por curiosidad me gustaría saber cómo hacer esto en el siguiente código. He estado buscando una respuesta, pero es inútil.Cómo maximizar una ventana de plt.show() usando Python

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

Respuesta

23

lo general el uso

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

antes de la llamada a plt.show(), y me sale una ventana maximizada. Esto funciona solo para el backend 'wx'.

EDIT:

para Qt4Agg backend, ver kwerenda de answer.

+11

Usando esto, obtengo 'mng.frame.Maximize (True) AttributeError: la instancia de FigureManagerTkAgg no tiene atributo 'frame'' en Matplotlib 1.2.0 – Junuxx

+0

lo anterior funciona en Windows, estás en una Mac? – gg349

+2

No, estoy en Windows. – Junuxx

2

Pruebe plt.figure(figsize=(6*3.13,4*3.13)) para hacer la trama más grande.

3

Al presionar la tecla f (o ctrl+f en 1.2rc1) cuando se enfoca en un diagrama aparecerá una ventana de trazado en pantalla completa. No del todo maximizador, pero tal vez mejor.

Aparte de eso, para maximizar realmente, necesitará usar comandos específicos de GUI Toolkit (si existen para su backend específico).

HTH

+0

¡Esto explica qué tecla seguí golpeando accidentalmente que completaba mis ventanas! (Y cómo deshacerlo.) – cxrodgers

1

Trate de usar el método '' Figure.set_size_inches, con el argumento de palabra clave adicional forward=True. De acuerdo con documentation, este debe cambiar el tamaño de la ventana de la figura.

Si realmente sucede dependerá del sistema operativo que esté utilizando.

26

Esto hace que la ventana ocupa toda la pantalla para mí, bajo Ubuntu 12.04 con el backend TkAgg:

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

Tenga en cuenta que esto tiene efectos extraños en una configuración de múltiples monitores. La ventana usará todos los monitores, en lugar de maximizarse. – user1202136

+0

Esto no creará una ventana maximizada (que se ajustará a los bordes de la pantalla), sino que creará una ventana no maximizada con el tamaño de una maximizada. – HelloGoodbye

+0

Esto maximiza con éxito la ventana en Ubuntu 14.04 también, manteniendo la barra superior con los botones que todos conocemos. – iamgin

39

con Qt backend (FigureManagerQT) de comando apropiado es:

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

Esto debería de trabajo (en menos con TkAgg):

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

(adoptado de arriba y Using Tkinter, is there a way to get the usable screen size without visibly zooming a window?)

+0

¡Yay! Esto funcionó para mí; crea una ventana maximizada que se ajusta a los bordes de la pantalla y tiene los botones minimizar, maximizar/restaurar hacia abajo y cerrar como debería. – HelloGoodbye

+1

Sin embargo, quiere decir que esto funciona con 'TkAgg', no' TkApp', ¿verdad? – HelloGoodbye

+0

¡Buena captura (probablemente un error tipográfico)! TkAgg es un backend para Tk. – dinvlad

3

Obtengo mng.frame.Maximize(True) AttributeError: FigureManagerTkAgg instance has no attribute 'frame' también.

Y miré a través de los atributos mng tiene, y yo encontramos este:

mng.window.showMaximized() 

que trabajó para mí.

Así que para las personas que tienen el mismo problema, puede intentar esto.

Por cierto, mi versión Matplotlib es 1.3.1.

+0

¡Gracias! Esta solución funcionó bien para mí. Ejecutando en Redhat Enterprise Linux 6, python 2.7.10, matplotlib 1.4.3. – CrossEntropy

+0

Sé que aparecerá una ventana de pantalla completa, pero mis gráficos aparecerán en una ventana separada cuando escriba 'plt.show()'. No en esta ventana a pantalla completa, ¿alguna sugerencia? – StayFoolish

83

ya que estoy en cero reputación No puedo dejar ninguna otra marca que una nueva respuesta Estoy en Windows (WIN7), ejecutando Python 2.7.5 & Matplotlib 1.3.1

I fue capaz de maximizar Figura ventanas para TkAgg, QT4Agg, y wxAgg usando las siguientes líneas:

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

Hope este resumen de las respuestas anteriores (y algunas adiciones) combinados en un ejemplo de trabajo (por lo menos para ventanas) ayuda. Cheers

+3

Esta debería ser la respuesta aceptada – fmonegaglia

+4

### funciona en Ubuntu ??? >> NO funcionó en Windows mng.resize (* mng.window.maxsize()) # funciona perfecto en Linux para mí – Daniele

+1

@Daniele, su solución funciona para mí en TkAgg en Ubuntu. ¡Gracias! Pero me tomó un tiempo analizar;) Tal vez deshacerse de todo antes de "mng.resize ...". – BenB

20

Para mí nada de lo anterior funcionó. Yo uso el backend Tk en Ubuntu 14.04 que contiene matplotlib 1.3.1.

El siguiente código crea una ventana gráfica de pantalla completa, que no es lo mismo que la maximización pero sirve muy bien mi propósito:

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

Esta fue también la solución que funcionó para mí (aunque va a pantalla completa, no a la ventana maximizada). Ejecutando en Redhat Enterprise Linux 6, python 2.7.10, matplotlib 1.4.3. – CrossEntropy

+1

Funcionó para mí en Visual Studio 2015 en Windows 10 x64, Python 3.5, excepto que no pude acceder al borde de la ventana para cerrar la figura, ya que estaba encima de los píxeles de la pantalla superior. –

+1

Para mí, esto tampoco crea una ventana maximizada, sino una pantalla completa. No obtuve ningún botón de minimizar, maximizar/restaurar, cerrar y cerrar como lo tienen las ventanas normales, y tuve que hacer clic con el botón derecho en la ventana de la barra de tareas para poder cerrarlo. – HelloGoodbye

0

Esto no significa necesariamente maximizar la ventana, pero no cambiar el tamaño de la ventana en proporción con el tamaño de la figura:

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 

Esto también podría ayudar a: http://matplotlib.1069221.n5.nabble.com/Resizing-figure-windows-td11424.html

0

lo siguiente puede trabajar con todos los backends, pero lo probé solo en 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

Ok, así que esto es lo que funcionó para mí. Hice toda la opción showMaximize() y cambia el tamaño de su ventana en proporción al tamaño de la figura, pero no se expande y 'ajusta' el lienzo. He resuelto este por:

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

plt.show() 
2

Esto es un poco hacky y, probablemente, no es portátil, sólo se utilizan si usted está buscando para una rápida y sucia. Si acabo de configurar la figura mucho más grande que la pantalla, toma exactamente toda la pantalla.

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

De hecho, en Ubuntu 16.04 con Qt4Agg, se maximiza la ventana (pantalla completa no) si es más grande que la pantalla. (Si tiene dos monitores, simplemente lo maximiza en uno de ellos).

+0

¡Funciona para mí! Como estoy tratando de obtener el tamaño de la pantalla. – StayFoolish

Cuestiones relacionadas