Просто из любопытства я хотел бы узнать, как это сделать в приведенном ниже коде. Я искал ответ, но бесполезен.
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()
python
matplotlib
Сантьяго Ловера
источник
источник
plt.get_current_fig_manager().window.state('zoomed')
тоplt.show()
.Ответы:
Я обычно использую
mng = plt.get_current_fig_manager() mng.frame.Maximize(True)
перед вызовом
plt.show()
, и я получаю развернутое окно. Это работает только для бэкэнда wx.РЕДАКТИРОВАТЬ:
для бэкэнда Qt4Agg см. ответ kwerenda .
источник
mng.frame.Maximize(True) AttributeError: FigureManagerTkAgg instance has no attribute 'frame'
в Matplotlib 1.2.0MacOSX
сервере?FigureManagerMac
, Кажется, не имеют ни атрибут ,window
ниframe
.Я использую Windows (WIN7), использую Python 2.7.5 и Matplotlib 1.3.1.
Я смог развернуть окна Figure для 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), поможет. Ура
источник
figManager.window.showMaximized()
развернутое полноэкранное окно. Следующая строка:plt.show()
просто покажите другое окно, которое отображает данные в окне нормального размера._tkinter.TclError: bad argument "zoomed": must be normal, iconic, or withdrawn
(Ubuntu 16.04).С бэкэндом Qt (FigureManagerQT) правильная команда:
источник
plt.show()
потом. Отличный ответ, работает на окнах!AttributeError: '_tkinter.tkapp' object has no attribute 'showMaximized'
в винду.Это заставляет окно занимать для меня весь экран в Ubuntu 12.04 с бэкэндом TkAgg:
источник
У меня ничего из вышеперечисленного не работало. Я использую бэкэнд 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, есть ли способ получить полезный размер экрана без видимого увеличения окна? )
источник
TkAgg
, не такTkApp
ли?Это своего рода хакерство и, вероятно, не переносимое, используйте его только в том случае, если вы ищете быстрый и грязный. Если я просто установлю цифру намного больше экрана, она займет ровно весь экран.
fig = figure(figsize=(80, 60))
Фактически, в Ubuntu 16.04 с Qt4Agg он разворачивает окно (не во весь экран), если оно больше экрана. (Если у вас два монитора, он просто максимизирует его на одном из них).
источник
Я нашел это для полноэкранного режима на Ubuntu
#Show full screen mng = plt.get_current_fig_manager() mng.full_screen_toggle()
источник
Я тоже понимаю
mng.frame.Maximize(True) AttributeError: FigureManagerTkAgg instance has no attribute 'frame'
.Затем я просмотрел атрибуты
mng
и обнаружил следующее:Это сработало для меня.
Так что для людей, у которых есть такая же проблема, вы можете попробовать это.
Кстати, моя версия Matplotlib - 1.3.1.
источник
plt.show()
. Нет предложений в этом полноэкранном окне?Единственное решение, которое безупречно работало на Win 10.
import matplotlib.pyplot as plt plt.plot(x_data, y_data) mng = plt.get_current_fig_manager() mng.window.state("zoomed") plt.show()
источник
На данный момент я сделал все возможное, чтобы поддержать разные бэкенды:
from platform import system def plt_maximize(): # See discussion: /programming/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)
источник
Нажатие
f
клавиши (илиctrl+f
в 1.2rc1) при фокусировке на графике откроет окно графика на весь экран. Не совсем оптимально, но, возможно, лучше.Помимо этого, чтобы получить максимальную отдачу, вам нужно будет использовать определенные команды GUI Toolkit (если они существуют для вашей конкретной серверной части).
HTH
источник
В моих версиях (Python 3.6, Eclipse, Windows 7) приведенные выше фрагменты не работали, но с подсказками, предоставленными Eclipse / pydev (после ввода: mng.), Я обнаружил:
Похоже, что использование mng-команд подходит только для локальной разработки ...
источник
Попробуйте использовать метод 'Figure.set_size_inches' с дополнительным аргументом ключевого слова
forward=True
. Согласно документации , это должно изменить размер окна рисунка.Произойдет ли это на самом деле , будет зависеть от используемой вами операционной системы.
источник
Вот функция, основанная на ответе @ Pythonio. Я инкапсулирую его в функцию, которая автоматически определяет, какой бэкэнд он использует, и выполняет соответствующие действия.
def plt_set_fullscreen(): backend = str(plt.get_backend()) mgr = plt.get_current_fig_manager() if backend == 'TkAgg': if os.name == 'nt': mgr.window.state('zoomed') else: mgr.resize(*mgr.window.maxsize()) elif backend == 'wxAgg': mgr.frame.Maximize(True) elif backend == 'Qt4Agg': mgr.window.showMaximized()
источник
Постарайтесь
plt.figure(figsize=(6*3.13,4*3.13))
сделать сюжет больше.источник
Хорошо, это то, что сработало для меня. Я применил всю опцию showMaximize (), и она изменяет размер вашего окна пропорционально размеру фигуры, но не расширяется и не «вписывается» в холст. Я решил это:
mng = plt.get_current_fig_manager() mng.window.showMaximized() plt.tight_layout() plt.savefig('Images/SAVES_PIC_AS_PDF.pdf') plt.show()
источник
Это не обязательно увеличивает ваше окно, но оно изменяет размер вашего окна пропорционально размеру фигуры:
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()
источник
import matplotlib.pyplot as plt def maximize(): plot_backend = plt.get_backend() mng = plt.get_current_fig_manager() if plot_backend == 'TkAgg': mng.resize(*mng.window.maxsize()) elif plot_backend == 'wxAgg': mng.frame.Maximize(True) elif plot_backend == 'Qt4Agg': mng.window.showMaximized()
Затем вызовите функцию
maximize()
передplt.show()
источник
Для бэкэнда GTK3Agg используйте
maximize()
- особенно с буквой m в нижнем регистре :Протестировано в Ubuntu 20.04 с Python 3.8.
источник
Для бэкэнда на основе Tk (TkAgg) эти два параметра позволяют развернуть и развернуть окно в полноэкранном режиме:
plt.get_current_fig_manager().window.state('zoomed') plt.get_current_fig_manager().window.attributes('-fullscreen', True)
При выводе на несколько окон вам нужно написать это для каждого окна:
data = rasterio.open(filepath) blue, green, red, nir = data.read() plt.figure(1) plt.subplot(121); plt.imshow(blue); plt.subplot(122); plt.imshow(red); plt.get_current_fig_manager().window.state('zoomed') rgb = np.dstack((red, green, blue)) nrg = np.dstack((nir, red, green)) plt.figure(2) plt.subplot(121); plt.imshow(rgb); plt.subplot(122); plt.imshow(nrg); plt.get_current_fig_manager().window.state('zoomed') plt.show()
Здесь обе «фигуры» нанесены в отдельные окна. Используя такую переменную, как
может не разворачивать второе окно, поскольку переменная по-прежнему относится к первому окну.
источник