Как добавить заголовок к графику граней Seaborn


101

Как мне добавить заголовок к этому сюжету в Сиборне? Назовем его «Я - НАЗВАНИЕ».

tips = sns.load_dataset("tips")
g = sns.FacetGrid(tips, col="sex", row="smoker", margin_titles=True)
g.map(sns.plt.scatter, "total_bill", "tip")

сюжет

Ответы:


174

После этих строк:

plt.subplots_adjust(top=0.9)
g.fig.suptitle('THIS IS A TITLE, YOU BET') # can also get the figure from plt.gcf()

Если вы добавите заголовок без регулировки оси, названия фасетов морского происхождения будут перекрывать его.

(С разными данными):

введите описание изображения здесь


6
Это сработало для меня, но мне пришлось использовать plt.subplots_adjust(top=0.8)вместо top=0.9.
Mack

5
suptitleтакже имеет yпараметр. У меня это сработало:g.fig.suptitle('foo', y=1.05)
trianta2

1
Это не сработает, если вы используете col_wrapas, тогда как фигура, так и подзаговор последней оси (справа внизу) унаследуют один и тот же заголовок.
xApple


25

В ноутбуке ipython это сработало для меня!

sns.plt.title('YOUR TITLE HERE')

10
Я попробовал это, и он добавил заголовок к нижнему правому рисунку, а не к целому рисунку
crypdick

12
Доступ pltчерез snsпакет устарел в 0.8.1. Это должно быть сделано с помощьюplt.title('YOUR TITLE HERE')
Mack

2
AttributeError: модуль seaborn не имеет атрибута plt
xApple

AttributeError: модуль seaborn не имеет атрибута plt
seralouk

3

Для меня сработало:

sns.plt.suptitle('YOUR TITLE HERE')


2
AttributeError: модуль seaborn не имеет атрибута plt
xApple

1
AttributeError: модуль seaborn не имеет атрибута plt
seralouk

0

Ответы с использованием sns.plt.title()иsns.plt.suptitle() больше не работают.

Вместо этого вам нужно использовать title()функцию matplotlib :

import matplotlib.pyplot as plt
sns.FacetGrid(<whatever>)
plt.title("A title")

1
Это не устанавливает заголовок в правильном для меня месте.
Gabriel Romon

4
Вы пробовали plt.suptitle()?
crypdick

Ваш ответ не работает, поскольку он влияет на заголовок последнего подзаговора осей (внизу справа). Ваше предложение plt.suptitle()также изменяет последние оси, а также основную фигуру.
xApple

0
plt.suptitle("Title") 

или

plt.title("Title")

Это сработало для меня.


Второе решение не работает, в то время как первое решение создает уродливую прослойку заголовков заголовков и фасетов. Вам нужно использовать координаты.
MERose

0

Заголовок не будет выровнен по центру с заголовками подзаголовков. Чтобы установить позицию заголовка, вы можете использовать plt.suptitle("Title", x=center)

В моем случае мои подзаголовки были в сетке 2x1, поэтому я смог bbox = g.axes[0,0].get_position()найти ограничивающую рамку, а затемcenter=0.5*(bbox.x1+bbox.x2)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.