Как увеличить ПЛТ.показать () окно с помощью Python


просто из любопытства я хотел бы знать, как это сделать в коде ниже. Я искал ответ, но это бесполезно.

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

15 ответов:

Я обычно использую

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

перед вызовом plt.show(), и я получаю развернутое окно. Это работает только для бэкэнда 'свойства'.

EDIT:

для qt4agg backend см. kwerenda's ответ.

поскольку я нахожусь на нулевой репутации, я не могу оставить никакого другого знака, кроме нового ответа Я нахожусь на Windows (WIN7), под управлением Python 2.7.5 & Matplotlib 1.3.1

мне удалось максимизировать окна фигур для TkAgg, QT4Agg и wxAgg, используя следующие строки:

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

надеюсь, что это резюме предыдущих ответов (и некоторых дополнений), объединенных в рабочем примере (по крайней мере для windows), поможет. Ура

С Qt backend (FigureManagerQT) правильная команда:

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

это делает окно занимает весь экран для меня, под Ubuntu 12.04 с tkagg backend:

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

для меня ничего из вышеперечисленного не сработало. Я использую бэкэнд Tk на Ubuntu 14.04, который содержит matplotlib 1.3.1.

следующий код создает полноэкранное окно графика, которое не совпадает с максимизацией, но оно хорошо служит моей цели:

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

Это должно работать (на меньше С TkAgg):

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

(принято из вышеизложенного и используя Tkinter, есть ли способ получить полезный размер экрана без видимого увеличения окна?)

это своего рода хаки и, вероятно, не портативный, только использовать его, если вы ищете быстро и грязно. Если я просто установлю цифру намного больше, чем экран, она займет ровно весь экран.

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

в самом деле, в Ubuntu 16.04 с Qt4Agg, он разворачивает окно (не на весь экран), если оно больше, чем на экране. (Если у вас есть два монитора, он просто максимизирует его на одном из них).

Я mng.frame.Maximize(True) AttributeError: FigureManagerTkAgg instance has no attribute 'frame' Как хорошо.

затем я просмотрел атрибуты mng есть, и я нашел это:

mng.window.showMaximized()

это сработало для меня.

таким образом, для людей, которые имеют те же проблемы, вы можете попробовать это.

кстати, моя версия Matplotlib-1.3.1.

попробовать plt.figure(figsize=(6*3.13,4*3.13)) чтобы сделать сюжет больше.

нажать

попробуйте использовать 'рисунок.метод set_size_inches, с дополнительным аргументом ключевого слова forward=True. Согласно документация этот должны измените размер окна рисунка.

погоду, что на самом деле произойдет, будет зависеть от операционной системы вы используете.

хорошо, так это то, что сработало для меня. Я сделал весь параметр showMaximize (), и он изменяет размер вашего окна пропорционально размеру фигуры, но он не расширяется и не "подходит" к холсту. Я решил это с помощью:

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

plt.show()

в моих версиях (Python 3.6, Eclipse, Windows 7) фрагменты, приведенные выше, не работали, но с подсказками, данными Eclipse/pydev (после ввода: mng.), Я нашел:

mng.full_screen_toggle()

похоже, что использование mng-команд подходит только для локального развития...

это не обязательно увеличивает ваше окно, но оно изменяет размер вашего окна пропорционально размеру фигуры:

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

Это также может помочь:http://matplotlib.1069221.n5.nabble.com/Resizing-figure-windows-td11424.html

следующее может работать со всеми бэкэндами, но я тестировал его только на 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()