144 votes

Comment maximiser une fenêtre plt.show() en utilisant Python

Par curiosité, j'aimerais savoir comment faire dans le code ci-dessous. J'ai cherché une réponse mais c'est inutile.

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

207voto

Pythonio Points 1889

Je suis sur un Windows (WIN7), avec Python 2.7.5 et Matplotlib 1.3.1.

J'ai pu maximiser Figure Windows pour TkAgg, QT4Agg, et wxAgg en utilisant les lignes suivantes :

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

si vous voulez maximiser plusieurs chiffres, vous pouvez utiliser

for fig in figs:
    mng = fig.canvas.manager
    # ...

J'espère que ce résumé des réponses précédentes (et quelques ajouts) combiné à un exemple fonctionnel (au moins pour Windows) vous aidera. Salutations

103voto

kwerenda Points 1069

Avec le backend Qt (FigureManagerQT) la commande correcte est :

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

57voto

Dan Christensen Points 361

Cela fait que la fenêtre occupe tout l'écran pour moi, sous Ubuntu 12.04 avec le backend TkAgg :

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

49voto

dinvlad Points 441

Cela devrait fonctionner (à moins avec TkAgg) :

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

(adopté à partir de ce qui précède et En utilisant Tkinter, y a-t-il un moyen d'obtenir la taille d'écran utilisable sans zoomer visiblement une fenêtre ? )

47voto

peschü Points 879

Pour moi, rien de ce qui précède n'a fonctionné. J'utilise le backend Tk sur Ubuntu 14.04 qui contient matplotlib 1.3.1.

Le code suivant crée une fenêtre de tracé en plein écran, ce qui n'est pas la même chose qu'une maximisation, mais cela sert bien mon objectif :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X