wake-up-neo.net

So maximieren Sie ein plt.show () - Fenster mit Python

Nur aus Neugier möchte ich wissen, wie man dies im folgenden Code macht. Ich habe nach einer Antwort gesucht, ist aber nutzlos.

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()
61
Santiago Lovera

Ich benutze normalerweise

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

vor dem Aufruf von plt.show() und ich bekomme ein maximiertes Fenster. Dies funktioniert nur für das 'wx' Backend.

BEARBEITEN:

für das Qt4Agg-Backend siehe kwerendas answer .

26
gg349

da ich keine Reputation habe, kann ich keine andere Marke als eine neue Antwort hinterlassen

Ich konnte Figure-Fenster für TkAgg, QT4Agg und wxAgg mithilfe der folgenden Zeilen maximieren:

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

Hoffe, diese Zusammenfassung der vorherigen Antworten (und einige Ergänzungen) in einem funktionierenden Beispiel (zumindest für Windows) kombiniert hilft

110
Pythonio

Mit Qt Backend (FigureManagerQT) lautet der richtige Befehl:

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

Damit nimmt das Fenster für mich den vollen Bildschirm unter Ubuntu 12.04 mit dem TkAgg-Backend ein:

    mng = plt.get_current_fig_manager()
    mng.resize(*mng.window.maxsize())
32
Dan Christensen

Für mich funktionierte nichts. Ich verwende das Tk-Backend auf Ubuntu 14.04, das Matplotlib 1.3.1 enthält.

Mit dem folgenden Code wird ein Vollbild-Plotfenster erstellt, das nicht dem Maximieren entspricht, aber meinem Zweck gut entspricht:

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

Dies sollte funktionieren (bei am wenigsten mit TkAgg):

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

(von oben übernommen und Verwenden Sie Tkinter, gibt es eine Möglichkeit, die nutzbare Bildschirmgröße zu erhalten, ohne ein Fenster sichtbar zu zoomen? )

19
dinvlad

Ich bekomme auch mng.frame.Maximize(True) AttributeError: FigureManagerTkAgg instance has no attribute 'frame'.

Dann habe ich die Attribute von mng durchgesehen und das gefunden: 

mng.window.showMaximized()

Das hat bei mir funktioniert.

Also für Leute, die das gleiche Problem haben, können Sie dies versuchen.

Meine Matplotlib-Version ist übrigens 1.3.1.

4
Alan Wang

Dies ist ein bisschen hackig und wahrscheinlich nicht portabel. Verwenden Sie es nur, wenn Sie schnell und schmutzig sind. Wenn ich die Figur nur viel größer als den Bildschirm einstelle, dauert dies genau den gesamten Bildschirm.

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

Tatsächlich maximiert es in Ubuntu 16.04 mit Qt4Agg das Fenster (nicht Vollbild), wenn es größer als der Bildschirm ist. (Wenn Sie zwei Monitore haben, maximieren Sie sie einfach auf einem von ihnen).

4
Mark

Versuchen Sie plt.figure(figsize=(6*3.13,4*3.13)), um die Darstellung zu vergrößern.

2
Navin

In meinen Versionen (Python 3.6, Eclipse, Windows 7) funktionierten die oben angegebenen Snippets nicht, aber mit Hinweisen von Eclipse/pydev (nach der Eingabe von: mng.) Fand ich Folgendes:

mng.full_screen_toggle()

Es scheint, dass die Verwendung von mng-Befehlen nur für die lokale Entwicklung in Ordnung ist ...

2
Antti A

Ich fand dies für den Vollbildmodus auf Ubuntu

#Show full screen
mng = plt.get_current_fig_manager()
mng.full_screen_toggle()
2
Westly White

Wenn Sie die f-Taste (oder ctrl+f in 1.2rc1) drücken, wenn Sie auf eine Zeichnung fokussieren, wird ein Diagrammfenster im Vollbildmodus angezeigt. Nicht ganz maximierend, aber vielleicht besser.

Um tatsächlich zu maximieren, müssen Sie GUI Toolkit-spezifische Befehle verwenden (sofern diese für Ihr spezifisches Backend vorhanden sind).

HTH

2
pelson

Die eine Lösung, die unter Win 10 einwandfrei funktionierte.

import matplotlib.pyplot as plt

plt.plot(x_data, y_data)

mng = plt.get_current_fig_manager()
mng.window.state("zoomed")
plt.show()
1
Zeds Zen

Versuchen Sie es mit der Methode "Figure.set_size_inches" und dem zusätzlichen Schlüsselwortargument forward=True. Gemäß der Dokumentation ändert dieses sollte das Figurenfenster.

Ob dies tatsächlich geschieht, hängt vom verwendeten Betriebssystem ab.

1
Roland Smith

Ok, das hat bei mir funktioniert. Ich habe die gesamte showMaximize () - Option verwendet und die Größe des Fensters wird proportional zur Größe der Figur geändert, aber es wird nicht erweitert und passt nicht in die Leinwand. Ich habe das gelöst durch:

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

plt.show()
1
ArmandduPlessis

Das Folgende funktioniert möglicherweise mit allen Backends, aber ich habe es nur mit QT getestet:

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
MikeTeX

Dies maximiert zwar nicht unbedingt Ihr Fenster, ändert aber die Größe des Fensters im Verhältnis zur Größe der Figur:

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

Dies könnte auch helfen: http://matplotlib.1069221.n5.nabble.com/Resizing-figure-windows-td11424.html

0
Blairg23

Meine bisher beste Arbeit, verschiedene Backends zu unterstützen:

from platform import system
def plt_maximize():
    # See discussion: https://stackoverflow.com/questions/12439588/how-to-maximize-a-plt-show-window-using-python
    backend = plt.get_backend()
    cfm = plt.get_current_fig_manager()
    if backend == "wxAgg":
        cfm.frame.Maximize(True)
    Elif backend == "TkAgg":
        if system() == "win32":
            cfm.window.state('zoomed')  # This is windows only
        else:
            cfm.resize(*cfm.window.maxsize())
    Elif backend == 'QT4Agg':
        cfm.window.showMaximized()
    Elif callable(getattr(cfm, "full_screen_toggle", None)):
        if not getattr(cfm, "flag_is_max", None):
            cfm.full_screen_toggle()
            cfm.flag_is_max = True
    else:
        raise RuntimeError("plt_maximize() is not implemented for current backend:", backend)
0
Martin R.