Как изменить размер фигуры с помощью сюжетов?

287

Я сталкивался с этим примером на сайте Matplotlib. Мне было интересно, можно ли увеличить размер фигуры.

Я пробовал с

f.figsize(15,15)

но это ничего не делает.

Брайан
источник

Ответы:

530

Если у вас уже есть объект рисунка, используйте:

f.set_figheight(15)
f.set_figwidth(15)

Но если вы используете команду .subplots () (как в примерах, которые вы показываете), чтобы создать новую фигуру, вы также можете использовать:

f, axs = plt.subplots(2,2,figsize=(15,15))
Рутгер Касси
источник
12
есть также, fig.set_size_inchesчтобы установить высоту и ширину вместе
Франческо Монтесано
1
Это не работает, вы можете установить высоту на то, что вы хотите, но она никогда не будет больше, чем ваш монитор.
2
Это не имеет ничего общего с вашим монитором. Что делать, если вы выводите в PNG? Вы говорите, что оно никогда не может быть больше, чем разрешение экрана? Это сочетание размера в дюймах с dpi, которое определяет размер в пикселях.
Рутгер Касси
включение figsize в вызов subplots (), похоже, не работает. однако вызов f.set_figheight работает.
Вики Б
Можно ли изменить размер самого участка без изменения размера фигуры?
Alexis.Rolland
38

В качестве альтернативы, создайте figure()объект, используя figsizeаргумент, а затем используйте, add_subplotчтобы добавить свои вспомогательные участки Например

import matplotlib.pyplot as plt
import numpy as np

f = plt.figure(figsize=(10,3))
ax = f.add_subplot(121)
ax2 = f.add_subplot(122)
x = np.linspace(0,4,1000)
ax.plot(x, np.sin(x))
ax2.plot(x, np.cos(x), 'r:')

Простой пример

Преимущества этого метода в том, что синтаксис ближе к вызовам subplot()вместо subplots(). Например, субплоты, кажется, не поддерживают использование a GridSpecдля управления интервалом субплотов, но и так subplot()и add_subplot()так.

aquirdturtle
источник
10
Есть ли возможность добавить «размер» к топору и топору 2 отдельно?
М. Гопал
2
Если я правильно понимаю, вы хотите установить относительный размер двух осей? В этом случае, я думаю, вы ищете этот вопрос: stackoverflow.com/questions/10388462/…
aquirdturtle