Як змінити розмір свого зображення, щоб воно було придатним для друку?
Наприклад, я хотів би використати папір формату А4, розміри якого 11,7 дюйма на 8,27 дюйма в ландшафтній орієнтації.
Як змінити розмір свого зображення, щоб воно було придатним для друку?
Наприклад, я хотів би використати папір формату А4, розміри якого 11,7 дюйма на 8,27 дюйма в ландшафтній орієнтації.
Відповіді:
Вам потрібно заздалегідь створити об'єкти matplotlib Figure and 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'
seaborn set
:
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()
Зауважте, що якщо ви намагаєтеся перейти до методу "фігурного рівня" у новонароджених (наприклад 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/isissue/488 та " Плотування з морем" за допомогою об'єктно-орієнтованого інтерфейсу 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)
Одразу після сюжету з новонародженим (так що не потрібно передавати сокиру новонародженому або змінювати настройки rc).
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
добре працювати над об’єктами сітки. >>> імпортувати новонароджених >>> імпортувати matplotlib.pyplot як pyplot >>> tips = seaborn.load_dataset ("поради") >>> 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
змінюється лише ширина, зберігаючи висоту постійною.
Ви завжди можете отримати потрібний розмір, граючи з цими двома параметрами.