Как увеличить ПЛТ.показать () окно с помощью 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 ответов:
Я обычно использую
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.
попробуйте использовать 'рисунок.метод 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()