full - python save figure maximize




Wie man ein plt.show() Fenster mit Python maximiert (10)

Nur aus Neugier möchte ich wissen, wie das in dem Code unten zu tun ist. 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()

Da ich auf null Reputation bin, kann ich kein anderes Zeichen hinterlassen als eine neue Antwort Ich bin auf einem Windows (WIN7), läuft Python 2.7.5 & Matplotlib 1.3.1

Ich konnte Figurenfenster für TkAgg, QT4Agg und wxAgg mit den 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()

Hoffentlich hilft diese Zusammenfassung der vorherigen Antworten (und einiger Ergänzungen) in einem funktionierenden Beispiel (zumindest für Windows). Prost


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

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

Dies maximiert nicht unbedingt Ihr Fenster, aber es passt Ihr Fenster proportional zur Größe der Figur an:

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



Für mich hat nichts davon funktioniert. Ich benutze das Tk-Backend auf Ubuntu 14.04 welches Matplotlib 1.3.1 enthält.

Der folgende Code erstellt ein Fullscreen-Plot-Fenster, das nicht der Maximierung entspricht, aber meinem Zweck dienlich ist:

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

Folgendes funktioniert möglicherweise mit allen Backends, aber ich habe es nur auf 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()

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 die answer Kwerenda.


In meinen Versionen (Python 3.6, Eclipse, Windows 7) funktionierten die obigen Schnipsel nicht, aber mit den von Eclipse / pydev gegebenen Tipps (nach der Eingabe von: mng.) Habe ich Folgendes gefunden:

mng.full_screen_toggle()

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


Ok, das ist was für mich funktioniert hat. Ich habe die ganze showMaximize () -Option gemacht und verkleinert das Fenster im Verhältnis zur Größe der Figur, aber es wird nicht vergrößert und passt 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()

Versuchen Sie plt.figure(figsize=(6*3.13,4*3.13)) , um die plt.figure(figsize=(6*3.13,4*3.13)) größer zu machen.







matplotlib