Подтвердить что ты не робот

Как увеличить окно plt.show() с помощью 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()
4b9b3361

Ответ 1

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

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

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

EDIT:

для бэкэнда Qt4Agg, см. kwerenda answer.

Ответ 2

так как я на нулевой репутации, я не могу оставить никакой другой знак, чем новый ответ Я нахожусь в 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), помогает. Приветствия

Ответ 3

Собственная команда Qt backend (FigureManagerQT):

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

Ответ 4

Это делает окно для меня полным экраном для меня, под Ubuntu 12.04 с бэкэндом TkAgg:

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

Ответ 5

Для меня ничего из этого не было. Я использую Tk backend на 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()

Ответ 7

Я получаю mng.frame.Maximize(True) AttributeError: FigureManagerTkAgg instance has no attribute 'frame'.

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

mng.window.showMaximized()

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

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

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

Ответ 8

Я нашел это для полноэкранного режима в Ubuntu

#Show full screen
mng = plt.get_current_fig_manager()
mng.full_screen_toggle()

Ответ 9

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

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

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

Ответ 10

Попробуйте plt.figure(figsize=(6*3.13,4*3.13)), чтобы сделать график больше.

Ответ 11

При нажатии клавиши f (или ctrl+f в 1.2rc1) при фокусировке на графике будет отображаться полноэкранное окно графика. Не совсем максимизация, но, возможно, лучше.

Кроме этого, чтобы максимизировать максимальные значения, вам нужно будет использовать специальные команды GUI Toolkit (если они существуют для вашего конкретного бэкэнд).

НТН

Ответ 12

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

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

Ответ 13

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

mng.full_screen_toggle()

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

Ответ 14

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

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

plt.show()

Ответ 15

Единственное решение, которое работало на 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()

Ответ 16

Мои лучшие усилия на данный момент, поддержка разных бэкэндов:

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)

Ответ 17

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

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

Ответ 18

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

Ответ 19

Вот функция, основанная на ответе @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()