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()
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 .
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
Mit Qt Backend (FigureManagerQT) lautet der richtige Befehl:
figManager = plt.get_current_fig_manager()
figManager.window.showMaximized()
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())
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()
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? )
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.
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).
Versuchen Sie plt.figure(figsize=(6*3.13,4*3.13))
, um die Darstellung zu vergrößern.
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 ...
Ich fand dies für den Vollbildmodus auf Ubuntu
#Show full screen
mng = plt.get_current_fig_manager()
mng.full_screen_toggle()
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
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()
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.
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()
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()
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
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)