Как изменить размер моего изображения, чтобы оно подходило для печати?
Например, я хотел бы использовать для бумаги формата А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)
sns.lmplot()
height
и aspect
параметров , как описано здесь stackoverflow.com/a/51602446/2412831
Вы также можете установить размер фигуры, передав словарь rc
параметру с ключом 'figure.figsize'
в set
методе seaborn :
import seaborn as sns
sns.set(rc={'figure.figsize':(11.7,8.27)})
Другой альтернативой может быть использование figure.figsize
по rcParams
установить размер фигуры , как показано ниже:
from matplotlib import rcParams
# figure size in inches
rcParams['figure.figsize'] = 11.7,8.27
Более подробную информацию можно найти в документации matplotlib
.set()
раньше.set_style()
Вы можете установить контекст 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')
sns.lmplot()
Обратите внимание, что если вы пытаетесь перейти к методу «на уровне фигуры» в 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 для получения более подробной информации о том, что методы уровня фигуры не подчиняются спецификациям осей.
Это также должно работать.
from matplotlib import pyplot as plt
import seaborn as sns
plt.figure(figsize=(15,16))
sns.countplot(data=yourdata, ...)
Для моего сюжета (sns factorplot) предложенный ответ не работает нормально.
Таким образом я использую
plt.gcf().set_size_inches(11.7, 8.27)
Сразу после сюжета с Морским борном (поэтому нет необходимости передавать топор морскому морю или менять настройки радиоуправления).
python g = sns.FacetGrid(df.set_index('category'), col="id") pyplot.gcf().set_size_inches(11.7, 8.27) g.map(lambda data, color: data.plot.barh(color=color), "count")
sns.FacetGrid
что нужно установить размер фигуры в соответствии с вычисленным значением (установленным с помощью height
и aspect
) и изменить размер фигуры непосредственно после того, как будет работать рисование морского дна. И другая тонкая настройка сюжета может произойти после изменения размера фигуры
В дополнение к ответу 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)
set_figwidth
и set_figheight
хорошо работают для объектов сетки. >>> импорт seaborn >>> импорт matplotlib.pyplot в виде pyplot >>> tips = seaborn.load_dataset ("tips") >>> g = seaborn.FacetGrid (tips, col = "time", row = "smoker") >>> g = g.map (pyplot.hist, "total_bill") >>> g.fig.set_figwidth (10) >>> g.fig.set_figheight (10)
Лучшие ответы Пола Х и Дж. Ли не работают для всех типов морских фигур. Для FacetGrid
типа (например sns.lmplot()
), использовать size
и aspect
параметр.
Size
изменяет высоту и ширину, сохраняя пропорции.
Aspect
только изменяет ширину, сохраняя высоту постоянной.
Вы всегда можете получить желаемый размер, играя с этими двумя параметрами.