Как растянуть размер сюжета на всю область формы [дубликат]

Работа с библиотеками для вас есть 2 варианта:

  1. Если вы загрузили и смогли создать и установить его, вы можете попытаться найти его позже внутри вас, CMAKE, как это ( в случае Boost) и ссылка на вашу цель: find_package (Boost COMPONENTS date_time system serialization thread program_options файловая система unit_test_framework regex chrono НЕОБХОДИМО) если сообщение (NOT Boost_FOUND) (FATAL_ERROR «Не могу найти boost!») сообщение endif (NOT Boost_FOUND) (STATUS) boost found ") include_directories ($ {Boost_INCLUDE_DIRS}) link_directories ($ {Boost_LIBRARY_DIRS}) target_link_libraries (YOUR_TARGET_NAME $ {Boost_LIBRARIES})
  2. Вы можете добавить внешние библиотеки в качестве автономной цели и использовать smth, как это для CMake для его создания: set (источники async_waiter.h async_waiter_impl.h async_waiter_impl.cpp) add_library (async_waiter $ {sources})

, а позже ссылка, на которую вы нацелитесь на нее:

target_link_libraries(YOU_TARGET_NAME async_waiter)
1206
задан tatwright 1 December 2008 в 22:24
поделиться

13 ответов

Это хорошо работает для меня:

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

9
ответ дан Blairg23 21 August 2018 в 17:08
поделиться

Пожалуйста, попробуйте простой код следующим образом:

from matplotlib import pyplot as plt
plt.figure(figsize=(1,1))
x = [1,2,3]
plt.plot(x, x)
plt.show()

Перед тем, как вы нарисуете, вам нужно установить размер фигуры.

156
ответ дан cbare 21 August 2018 в 17:08
поделиться
  • 1
    Этот ответ говорит мне, что это m atplotlib.pyplot.figure, о котором другие не говорят так четко. Я продолжаю пробовать такие вещи, как matplotlib.figure и matplotlib.figure.Figure – Lyndon White 24 December 2014 в 06:29
  • 2
    & quot; _tkinter.TclError: недостаточно свободной памяти для буфера изображений & quot; – Cerin 30 March 2017 в 00:16
  • 3
    plt.figure(figsize=(1,1)) - это крутой ход. Спасибо. – ximiki 15 November 2017 в 17:24
  • 4
    Это сработало для меня – xssChauhan 2 March 2018 в 20:09
  • 5
    Это не работает для меня в ноутбуке jupyter – Selah 16 August 2018 в 18:52

Поскольку Matplotlib не может использовать метрическую систему изначально, если вы хотите указать размер вашей фигуры в разумной единице длины, такой как сантиметры, вы можете сделать следующее (код из gns-ank ):

def cm2inch(*tupl):
    inch = 2.54
    if isinstance(tupl[0], tuple):
        return tuple(i/inch for i in tupl[0])
    else:
        return tuple(i/inch for i in tupl)

Затем вы можете использовать:

plt.figure(figsize=cm2inch(21, 29.7))
67
ответ дан Community 21 August 2018 в 17:08
поделиться
  • 1
    Каждый раз, когда я пытаюсь вспомнить, как это сделать, я попадаю в этот пост. Итак, это код, который я обычно ищу: fig = plt.figure() default_size = fig.get_size_inches() fig.set_size_inches( (default_size[0]*2, default_size[1]*2) ) – yauheni_selivonchyk 12 October 2016 в 11:58

ИСПОЛЬЗОВАНИЕ plt.rcParams

Существует также это обходное решение, если вы хотите изменить размер без использования среды рисунка. Например, если вы используете plt.plot().

import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = (20,3)

Это очень полезно при построении встроенного (например, с IPython Notebook).

Преобразование в cm

Кортеж figsize принимает дюймы, поэтому, если вы хотите установить его в сантиметрах, вам нужно разделить их на 2.54, посмотрите на этот вопрос .

128
ответ дан G M 21 August 2018 в 17:08
поделиться
  • 1
    Отлично! Также полезно устанавливать его один раз и многократно рисовать. – automorphic 18 October 2017 в 22:44
  • 2
    По какой-то причине, похоже, это больше не работает в ноутбуке Jupyter (но используется). – Ray 13 December 2017 в 15:01
  • 3
    @Ray Можете ли вы написать версию своего ноутбука Jupyter и поведение для меня это работает – G M 13 December 2017 в 17:41
  • 4
    @GM в прошлый раз, когда я тестировал, это была версия Jupyter 4.3.0 и Python 3.6.2 от Anaconda, в Windows 10 и Google Chrome 63.0.3239.84. – Ray 19 December 2017 в 18:13
  • 5
    Чтобы он работал, мне нужно вызвать plt.rcParams["figure.figsize"] = (20,3) в дополнительной ячейке. Когда я вызываю его в той же ячейке, что и оператор импорта, он игнорируется. – asmaier 11 May 2018 в 07:33

В случае, если вы ищете способ изменить размер фигуры в Pandas, вы можете сделать, например ::

df['some_column'].plot(figsize=(10, 5))

, где df - это кадр данных Pandas. Если вы хотите изменить настройки по умолчанию, вы можете сделать следующее:

import matplotlib

matplotlib.rc('figure', figsize=(10, 5))
41
ответ дан Kris 21 August 2018 в 17:08
поделиться

Замечание об отступлении: согласно официальному руководству Matplotlib использование модуля pylab больше не рекомендуется. Пожалуйста, подумайте об использовании модуля matplotlib.pyplot вместо этого, как описано в , этот другой ответ .

Кажется, что работает следующее:

from pylab import rcParams
rcParams['figure.figsize'] = 5, 10

Это делает ширину фигуры 5 дюймов и ее высоту 10 дюймов .

Класс Figure затем использует это как значение по умолчанию для одного из своих аргументов.

259
ответ дан Peter Duniho 21 August 2018 в 17:08
поделиться
  • 1
    Это также хорошо работает в верхней части ноутбука iPython, который (с учетом --pylab = inline) имеет rcParams, уже импортированный на верхнем уровне. – nealmcb 10 December 2013 в 22:57
  • 2
    Это не сработало на моей Windows-машине с интерфейсом OO на pyplot и Qt-сервере. fig.set_size_inches(18.5, 10.5, forward=True) работал. – Bennett Brown 6 February 2016 в 20:18
  • 3
    Этот ответ в настоящее время обсуждается на Meta – Mischa 10 July 2017 в 14:17
  • 4

Чтобы увеличить размер вашей фигуры в N раз, вам нужно вставить это прямо перед вашим pl.show ():

N = 2
params = pl.gcf()
plSize = params.get_size_inches()
params.set_size_inches( (plSize[0]*N, plSize[1]*N) )

Он также хорошо работает с ноутбуком ipython.

13
ответ дан psihodelia 21 August 2018 в 17:08
поделиться

Попробуйте прокомментировать строку fig = ...

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

N = 50
x = np.random.rand(N)
y = np.random.rand(N)
area = np.pi * (15 * np.random.rand(N))**2

fig = plt.figure(figsize=(18, 18))
plt.scatter(x, y, s=area, alpha=0.5)
plt.show()
19
ответ дан Renaud 21 August 2018 в 17:08
поделиться

Вы можете просто использовать (из matplotlib.figure.Figure ):

fig.set_size_inches(width,height)

Начиная с Matplotlib 2.0.0, изменения на вашем холсте будут видны сразу, так как ключевое слово forward по умолчанию имеет значение True .

Если вы хотите просто изменить ширину или высоту вместо обоих, вы можете использовать

fig.set_figwidth(val) или fig.set_figheight(val)

Они также немедленно обновят ваш холст, но только в Matplotlib 2.2.0 и новее.

Для более старых версий

Вы должны явно указать forward=True, чтобы жить-обновлять свой холст в версиях старше, чем указано выше. Обратите внимание, что функции set_figwidth и set_figheight не поддерживают параметр forward в версиях старше Matplotlib 1.5.0.

20
ответ дан River 21 August 2018 в 17:08
поделиться

Если вы уже создали фигуру, вы можете быстро это сделать:

fig = matplotlib.pyplot.gcf()
fig.set_size_inches(18.5, 10.5)
fig.savefig('test2png.png', dpi=100)

Чтобы распространить изменение размера на существующее gui-окно, добавьте forward=True

fig.set_size_inches(18.5, 10.5, forward=True)
535
ответ дан tacaswell 21 August 2018 в 17:08
поделиться

figure сообщает вам сигнатуру вызова:

from matplotlib.pyplot import figure
figure(num=None, figsize=(8, 6), dpi=80, facecolor='w', edgecolor='k')

figure(figsize=(1,1)) создаст изображение в дюймах на дюйм, которое будет составлять 80 на 80 пикселей, если только вы также даете другой аргумент dpi.

679
ответ дан Tahlor 21 August 2018 в 17:08
поделиться
  • 1
    Если вы уже создали фигуру, скажите, что это цифра 1 (это по умолчанию используется при использовании pyplot), вы можете использовать цифру (num = 1, figsize = (8, 6), ...) изменить размер и т. д. Если вы используете pyplot / pylab и show() для создания всплывающего окна, вам нужно вызвать figure(num=1,...) перед , что вы рисуете что-либо - pyplot / pylab создает цифру как как только вы рисуете что-то, и размер всплывающего окна, по-видимому, фиксируется на этом этапе. – drevicko 3 July 2013 в 00:31
  • 2
    Я чувствую, что ваш ответ будет лучше, если вы удалите аргументы по умолчанию. Это уменьшает отношение сигнал / шум без необходимости. – frmsaul 5 April 2017 в 18:06
  • 3
    Означает ли это, если вы установили DPI в 1, то figsize станет пиксельным блоком вместо единицы дюймов? Это было бы более полезно при использовании matplotlib для веб-интерфейсов и интерфейсов GUI. – CMCDragonkai 17 July 2017 в 10:48
  • 4
    – Breno Baiardi 9 November 2017 в 18:43
  • 5
    @BrenoBaiardi Этот вопрос касается размера фигуры. Оси сверху фигуры могут по-прежнему иметь неравномерное соотношение сторон, даже если цифра в целом равна 1: 1, и даже если поле осей равно 1: 1, данные могут масштабироваться по-разному в направлениях x и y. Таким образом, нет, эта команда не гарантирует равное соотношение сторон. – Jouni K. Seppänen 13 November 2017 в 15:43

Это уменьшает размер изображения сразу же после рисования рисунка (по крайней мере, используя Qt4Agg / TkAgg, но не MacOSX - с matplotlib 1.4.0):

matplotlib.pyplot.get_current_fig_manager().resize(width_px, height_px)
6
ответ дан wilywampa 21 August 2018 в 17:08
поделиться
69
ответ дан Community 1 November 2018 в 10:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: