Jak dodać tytuł do Seaborn Facet Plot

101

Jak dodać tytuł do tej działki morskiej? Nadajmy temu tytuł „JESTEM TYTUŁEM”.

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

wątek

kołnierz ślepy
źródło

Odpowiedzi:

174

Po tych wierszach:

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

Jeśli dodasz podtytuł bez dostosowywania osi, tytuły aspektu morskiego będą na niego nakładać się.

(Z różnymi danymi):

wprowadź opis obrazu tutaj

cphlewis
źródło
6
To zadziałało dla mnie, ale musiałem użyć plt.subplots_adjust(top=0.8)zamiast top=0.9.
Mack
5
suptitlema również yparametr. To zadziałało dla mnie:g.fig.suptitle('foo', y=1.05)
trianta2
1
To nie zadziała, jeśli użyjesz col_wrapjako, wtedy zarówno figura, jak i wykres podrzędny ostatniej osi (na dole po prawej) odziedziczą ten sam tytuł.
xApple
25

W notatniku ipython to zadziałało!

sns.plt.title('YOUR TITLE HERE')
Meera Lakhavani
źródło
10
Próbowałem tego i dodałem tytuł do prawego dolnego rogu rysunku, a nie całą figurę
crypdick
12
Dostęp pltza pośrednictwem snspakietu został wycofany w wersji 0.8.1. Należy to zrobić za pomocąplt.title('YOUR TITLE HERE')
Mack
2
AttributeError: moduł „seaborn” nie ma atrybutu „plt”
xApple
AttributeError: moduł „seaborn” nie ma atrybutu „plt”
seralouk
3

Dla mnie zadziałało:

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

pmetzner
źródło
2
AttributeError: moduł „seaborn” nie ma atrybutu „plt”
xApple
1
AttributeError: moduł „seaborn” nie ma atrybutu „plt”
seralouk
0

Odpowiedzi używają sns.plt.title()i sns.plt.suptitle()już nie działają.

Zamiast tego musisz użyć title()funkcji matplotlib :

import matplotlib.pyplot as plt
sns.FacetGrid(<whatever>)
plt.title("A title")
crypdick
źródło
1
To nie ustawia tytułu we właściwej lokalizacji dla mnie.
Gabriel Romon
4
Próbowałeś plt.suptitle()?
crypdick
Twoja odpowiedź nie działa, ponieważ wpływa na tytuł wykresu pomocniczego ostatniej osi (na dole po prawej). Twoja sugestia plt.suptitle()modyfikuje również ostatnie osie, a także główną figurę.
xApple
0
plt.suptitle("Title") 

lub

plt.title("Title")

To zadziałało dla mnie.

Vraj Patel
źródło
Drugie rozwiązanie nie działa, podczas gdy pierwsze rozwiązanie tworzy brzydkie połączenie tytułów podtytułów i aspektów. Musisz użyć za pomocą współrzędnych.
MERose
0

Tytuł nie zostanie wyśrodkowany z tytułami działek pomocniczych. Aby ustawić pozycję tytułu, możesz użyć plt.suptitle("Title", x=center)

W moim przypadku moje podploty były w siatce 2x1, więc mogłem użyć bbox = g.axes[0,0].get_position()do znalezienia obwiedni, a następniecenter=0.5*(bbox.x1+bbox.x2)

ndw
źródło