Консенсус заключается в использовании словаря для этого - см. другие ответы. Это хорошая идея для большинства случаев, однако есть много аспектов, связанных с этим:
Тем не менее, я реализовал variable variables manager -класс, который предоставляет некоторые из вышеперечисленных идей. Он работает для python 2 и 3.
Вы использовали бы класс следующим образом:
from variableVariablesManager import VariableVariablesManager
myVars = VariableVariablesManager()
myVars['test'] = 25
print(myVars['test'])
# define a const variable
myVars.defineConstVariable('myconst', 13)
try:
myVars['myconst'] = 14 # <- this raises an error, since 'myconst' must not be changed
print("not allowed")
except AttributeError as e:
pass
# rename a variable
myVars.renameVariable('myconst', 'myconstOther')
# preserve locality
def testLocalVar():
myVars = VariableVariablesManager()
myVars['test'] = 13
print("inside function myVars['test']:", myVars['test'])
testLocalVar()
print("outside function myVars['test']:", myVars['test'])
# define a global variable
myVars.defineGlobalVariable('globalVar', 12)
def testGlobalVar():
myVars = VariableVariablesManager()
print("inside function myVars['globalVar']:", myVars['globalVar'])
myVars['globalVar'] = 13
print("inside function myVars['globalVar'] (having been changed):", myVars['globalVar'])
testGlobalVar()
print("outside function myVars['globalVar']:", myVars['globalVar'])
Если вы хотите разрешить переписывание переменных с помощью только тот же тип:
myVars = VariableVariablesManager(enforceSameTypeOnOverride = True)
myVars['test'] = 25
myVars['test'] = "Cat" # <- raises Exception (different type on overwriting)
Это хорошо работает для меня:
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
Пожалуйста, попробуйте простой код следующим образом:
from matplotlib import pyplot as plt
plt.figure(figsize=(1,1))
x = [1,2,3]
plt.plot(x, x)
plt.show()
Перед тем, как вы нарисуете, вам нужно установить размер фигуры.
atplotlib.pyplot.figure
, о котором другие не говорят так четко. Я продолжаю пробовать такие вещи, как matplotlib.figure
и matplotlib.figure.Figure
– Lyndon White
24 December 2014 в 06:29
Поскольку 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))
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.plot()
.
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = (20,3)
Это очень полезно при построении встроенного (например, с IPython Notebook).
Кортеж figsize
принимает дюймы, поэтому, если вы хотите установить его в сантиметрах, вам нужно разделить их на 2.54, посмотрите на этот вопрос .
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))
Замечание об отступлении: согласно официальному руководству Matplotlib использование модуля
pylab
больше не рекомендуется. Пожалуйста, подумайте об использовании модуляmatplotlib.pyplot
вместо этого, как описано в , этот другой ответ .Кажется, что работает следующее:
from pylab import rcParams rcParams['figure.figsize'] = 5, 10
Это делает ширину фигуры 5 дюймов и ее высоту 10 дюймов .
Класс Figure затем использует это как значение по умолчанию для одного из своих аргументов.
fig.set_size_inches(18.5, 10.5, forward=True)
работал.
– Bennett Brown
6 February 2016 в 20:18
Чтобы увеличить размер вашей фигуры в N раз, вам нужно вставить это прямо перед вашим pl.show ():
N = 2
params = pl.gcf()
plSize = params.get_size_inches()
params.set_size_inches( (plSize[0]*N, plSize[1]*N) )
Он также хорошо работает с ноутбуком ipython.
Попробуйте прокомментировать строку 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()
Вы можете просто использовать (из 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.
Если вы уже создали фигуру, вы можете быстро это сделать:
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)
imshow
, теперь я использую этот код сразу после удаления пространства вокруг области графика с помощью plt.subplots_adjust(left=0.0, right=1.0, bottom=0.0, top=1.0)
.
– heltonbiker
26 November 2012 в 16:21
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.
show()
для создания всплывающего окна, вам нужно вызвать figure(num=1,...)
перед , что вы рисуете что-либо - pyplot / pylab создает цифру как как только вы рисуете что-то, и размер всплывающего окна, по-видимому, фиксируется на этом этапе.
– drevicko
3 July 2013 в 00:31
Это уменьшает размер изображения сразу же после рисования рисунка (по крайней мере, используя Qt4Agg / TkAgg, но не MacOSX - с matplotlib 1.4.0):
matplotlib.pyplot.get_current_fig_manager().resize(width_px, height_px)