Размер ConfusionMatrix для увеличения [дубликат]

Если вы не хотите использовать какой-либо объект, вы можете использовать setattr() внутри вашего текущего модуля:

import sys
current_module = module = sys.modules[__name__]  # i.e the "file" where your code is written
setattr(current_module, 'variable_name', 15)  # 15 is the value you assign to the var
print(variable_name)  # >>> 15, created from a string
1210
задан 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 22 August 2018 в 15:46
поделиться

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

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

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

157
ответ дан cbare 22 August 2018 в 15:46
поделиться
  • 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 22 August 2018 в 15:46
поделиться
  • 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 22 August 2018 в 15:46
поделиться
  • 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 22 August 2018 в 15:46
поделиться

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

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

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

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

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

259
ответ дан Peter Duniho 22 August 2018 в 15:46
поделиться
  • 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
    импортировать панд как pd df = pd.read_csv (r'C: \ Users \ Patrick \ Desktop \ pandas \ avocado.csv ') импортировать matplotlib.pyplot как plt из pylab import rcParams% matplotlib inline df2 = df [[' Date ', 'AveragePrice', 'region']] df2 = (df2.loc [df2 ['region'] == 'Albany']) df2 ['Date'] = pd.to_datetime (df2 ['Date']) df2 = df2 [['Date', 'AveragePrice']] df2 = df2.sort_values ​​(['Date'], по возрастанию = [True]) df2 = df2.set_index ('Date') ax = df2.plot (kind = 'line' , title = & quot; Изменение цены & quot;) ax.set_xlabel (& quot; Period & quot ;, fontsize = 12) ax.set_ylabel (& quot; Price & quot ;, fontsize = 12) ax ['ax.figsize'] = 5, 10 plt.show () – pes04 8 September 2018 в 07:38

Чтобы увеличить размер вашей фигуры в 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 22 August 2018 в 15:46
поделиться

Попробуйте прокомментировать строку 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 22 August 2018 в 15:46
поделиться

Вы можете просто использовать (из 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 22 August 2018 в 15:46
поделиться

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

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 22 August 2018 в 15:46
поделиться
  • 1
    Решил меня проблему с imshow, теперь я использую этот код сразу после удаления пространства вокруг области графика с помощью plt.subplots_adjust(left=0.0, right=1.0, bottom=0.0, top=1.0). – heltonbiker 26 November 2012 в 16:21
  • 2
    Аналогично, вы можете запустить fig.set_dpi(100). – Erik Shilts 27 March 2015 в 20:07
  • 3
    @drevicko Вам просто нужно добавить forward=True к вызову set_size_inches. – tacaswell 7 June 2015 в 19:38

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.

680
ответ дан Tahlor 22 August 2018 в 15:46
поделиться
  • 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
    с figsize (1,1) у вас будет соотношение в изображении как 1: 1? потому что все мои круговые диаграммы показывают овальную форму, и единственный способ, которым я нашел их округлить, - использовать plot.axis («equals»). они будут иметь тот же эффект или они будут вести себя по-другому? – 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 22 August 2018 в 15:46
поделиться
[g6] Первая ссылка в Google для [f3] - [g0] AdjustingImageSize [/g0] ([g1] Google кеш страницы [/g1]). [/g6] [g7] Вот тестовый скрипт из приведенного выше стр. Он создает [f4] файлы разных размеров одного и того же изображения: [/g7] [f1] [g8] Вывод: [/g8] [f2] [g9] Две заметки: [/g9] [g5] [g3] Комментарии к модулю и фактический результат отличаются. [/g3] [g4] [g2] Этот ответ [/g2] позволяет легко объединить все три изображения в один файл изображения, чтобы увидеть разницу в размерах. [/g4] [/g5]
69
ответ дан Community 5 November 2018 в 13:30
поделиться
  • 1
    Каждый раз, когда я пытаюсь вспомнить, как это сделать, я попадаю в этот пост. Итак, это код, который я обычно ищу: [f1] – yauheni_selivonchyk 12 October 2016 в 11:58
Другие вопросы по тегам:

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