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

1voto

UCDS Points 1

J'ai recueilli quelques réponses dans les fils de discussion que j'ai consultés en essayant d'obtenir la même chose. Voici la fonction que j'utilise actuellement qui maximise toutes les parcelles et ne se soucie pas vraiment du backend utilisé. Je l'exécute à la fin du script. Elle rencontre toujours le problème mentionné par d'autres personnes utilisant des configurations multi-écrans, dans la mesure où fm.window.maxsize() obtiendra la taille totale de l'écran plutôt que celle du moniteur actuel. Si vous connaissez la taille d'écran que vous voulez, vous pouvez remplacer *fm.window.maxsize() par le tuple (width_inches, height_inches).

Fonctionnellement, tout ce que cela fait est de prendre une liste de figures, et de les redimensionner à l'interprétation actuelle de matplotlibs de la taille maximale actuelle de la fenêtre.

def maximizeAllFigures():
    '''
    Maximizes all matplotlib plots.
    '''
    for i in plt.get_fignums():
        plt.figure(i)
        fm = plt.get_current_fig_manager()
        fm.resize(*fm.window.maxsize())

0voto

Blairg23 Points 78

Cela ne maximise pas nécessairement votre fenêtre, mais la redimensionne en fonction de la taille de la figure :

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

Cela pourrait aussi aider : http://matplotlib.1069221.n5.nabble.com/Resizing-figure-Windows-td11424.html

0voto

MikeTeX Points 437

Ce qui suit peut fonctionner avec tous les backends, mais je ne l'ai testé que sur 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()

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