Как изменить размер моего изображения, чтобы он был подходящим для печати?
Например, я бы хотел использовать бумагу формата А4, размеры которой в альбомной ориентации составляют 11,7 дюйма на 8,27 дюйма.
Как изменить размер моего изображения, чтобы он был подходящим для печати?
Например, я бы хотел использовать бумагу формата А4, размеры которой в альбомной ориентации составляют 11,7 дюйма на 8,27 дюйма.
Вам нужно заранее создать объекты Matplotlib Figure и Axes, указав, насколько велика фигура:
from matplotlib import pyplot
import seaborn
import mylib
a4_dims = (11.7, 8.27)
df = mylib.load_data()
fig, ax = pyplot.subplots(figsize=a4_dims)
seaborn.violinplot(ax=ax, data=df, **violin_options)
Вы также можете установить размер фигуры, передав словарь в параметр rc
с ключом 'figure.figsize'
в методе seaborn set
:
import seaborn as sns
sns.set(rc={'figure.figsize':(11.7,8.27)})
Другой альтернативой может быть использование figure.figsize
для rcParams
для установки размера фигуры, как rcParams
ниже:
from matplotlib import rcParams
# figure size in inches
rcParams['figure.figsize'] = 11.7,8.27
Более подробную информацию можно найти в документации по matplotlib.
Вы можете установить для контекста значение poster
или вручную установить fig_size
.
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
np.random.seed(0)
n, p = 40, 8
d = np.random.normal(0, 2, (n, p))
d += np.log(np.arange(1, p + 1)) * -5 + 10
# plot
sns.set_style('ticks')
fig, ax = plt.subplots()
# the size of A4 paper
fig.set_size_inches(11.7, 8.27)
sns.violinplot(data=d, inner="points", ax=ax)
sns.despine()
fig.savefig('example.png')
Обратите внимание, что если вы пытаетесь перейти к методу "на уровне фигуры" в seaborn (например, lmplot
, catplot
/factorplot
, jointplot
), вы можете и должны указать это в аргументах, используя height
и aspect
.
sns.catplot(data=df, x='xvar', y='yvar',
hue='hue_bar', height=8.27, aspect=11.7/8.27)
См. Https://github.com/mwaskom/seaborn/issues/488 и Plotting with seaborn с использованием объектно-ориентированного интерфейса matplotlib для более подробной информации о том, что методы уровня фигуры не подчиняются спецификациям осей.
сначала импортируйте matplotlib и используйте его, чтобы установить размер фигуры
from matplotlib import pyplot as plt
import seaborn as sns
plt.figure(figsize=(15,8))
ax = sns.barplot(x="Word", y="Frequency", data=boxdata)
Для моего сюжета (sns factorplot) предложенный ответ не работает нормально.
Таким образом я использую
plt.gcf().set_size_inches(11.7, 8.27)
Сразу после сюжета с Морским борном (поэтому нет необходимости передавать топор морскому морю или менять настройки радиоуправления).
Это также должно работать.
from matplotlib import pyplot as plt
import seaborn as sns
plt.figure(figsize=(15,16))
sns.countplot(data=yourdata, ...)
Это можно сделать с помощью:
plt.figure(figsize=(15,8))
sns.kdeplot(data,shade=True)
Лучшие ответы Пола Х и Дж. Ли не работают для всех типов морских фигур. Для типа FacetGrid
(например, sns.lmplot()
) используйте параметр size
и aspect
.
Size
изменяет высоту и ширину, сохраняя пропорции.
Aspect
только изменяет ширину, сохраняя высоту постоянной.
Вы всегда можете получить желаемый размер, играя с этими двумя параметрами.
Кредит: fooobar.com/questions/110676/...
В дополнение к ответу elz, касающемуся методов "уровня фигуры", которые возвращают многосюжетные объекты сетки, можно явно установить высоту и ширину фигуры (то есть без использования соотношения сторон), используя следующий подход:
import seaborn as sns
g = sns.catplot(data=df, x='xvar', y='yvar', hue='hue_bar')
g.fig.set_figwidth(8.27)
g.fig.set_figheight(11.7)