Вопрос-Ответ

How to change the figure size of a seaborn axes or figure level plot

Как изменить размер рисунка на графике seaborn axes или уровня рисунка

Как мне изменить размер моего изображения, чтобы оно подходило для печати?

Например, я хотел бы использовать бумагу формата А4, размеры которой составляют 11,7 дюйма на 8,27 дюйма в альбомной ориентации.

Переведено автоматически
Ответ 1

Вы также можете установить размер рисунка, передав словарь в rc параметр с ключом 'figure.figsize' в методе seaborn set_theme (который заменяет set метод, устаревший в версии 0.11.0 (сентябрь 2020 г.))

import seaborn as sns

sns.set_theme(rc={'figure.figsize':(11.7,8.27)})

Другой альтернативой может быть использование figure.figsize of rcParams для установки размера рисунка, как показано ниже:

from matplotlib import rcParams

# figure size in inches
rcParams['figure.figsize'] = 11.7,8.27

Более подробную информацию можно найти в документации matplotlib

Ответ 2

Вам необходимо заранее создать объекты 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)
Ответ 3

Обратите внимание, что если вы пытаетесь перейти к методу "уровня рисунка" в 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 и построение графиков с помощью seaborn с использованием объектно-ориентированного интерфейса matplotlib для получения более подробной информации о том факте, что методы уровня рисунка не соответствуют спецификациям axes.

Ответ 4

сначала импортируйте 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)
python matplotlib