So fügen Sie Seaborn Facet Plot einen Titel hinzu

93

Wie füge ich diesem Seaborne-Plot einen Titel hinzu? Geben wir ihm den Titel "I AM A TITLE".

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

Handlung

Ich bin nicht George
quelle

Antworten:

162

Nach diesen Zeilen:

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

Wenn Sie einen Untertitel hinzufügen, ohne die Achse anzupassen, überlappen ihn die Titel der seegeborenen Facetten.

(Mit unterschiedlichen Daten):

Geben Sie hier die Bildbeschreibung ein

cphlewis
quelle
6
Das hat bei mir funktioniert, aber ich musste plt.subplots_adjust(top=0.8)stattdessen verwenden top=0.9.
Mack
4
suptitlehat auch einen yParameter. Dies funktionierte für mich:g.fig.suptitle('foo', y=1.05)
Trianta2
1
Dies funktioniert nicht, wenn Sie verwenden, col_wrapda dann sowohl die Abbildung als auch die Unterzeichnung der letzten Achse (unten rechts) denselben Titel erben.
xApple
25

In ipython notebook hat das bei mir funktioniert!

sns.plt.title('YOUR TITLE HERE')
Meera Lakhavani
quelle
10
Ich habe es versucht und es hat einen Titel zur unteren rechten Figur hinzugefügt, nicht die ganze Figur
Crypdick
12
Der Zugriff pltüber das snsPaket ist in 0.8.1 veraltet. Dies sollte mitplt.title('YOUR TITLE HERE')
Mack
2
AttributeError: Modul 'seaborn' hat kein Attribut 'plt'
xApple
AttributeError: Modul 'seaborn' hat kein Attribut 'plt'
seralouk
3

Was für mich funktioniert hat war:

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

pmetzner
quelle
2
AttributeError: Modul 'seaborn' hat kein Attribut 'plt'
xApple
1
AttributeError: Modul 'seaborn' hat kein Attribut 'plt'
seralouk
1
plt.suptitle("Title") 

oder

plt.title("Title")

Das hat bei mir funktioniert.

Vraj Patel
quelle
0

Die Antworten mit sns.plt.title()und sns.plt.suptitle()funktionieren nicht mehr.

Stattdessen müssen Sie die title()Funktion von matplotlib verwenden:

import matplotlib.pyplot as plt
sns.FacetGrid(<whatever>)
plt.title("A title")
Crypdick
quelle
1
Dies setzt den Titel nicht an der richtigen Stelle für mich.
Gabriel Romon
4
Hast du es versucht plt.suptitle()?
Crypdick
Ihre Antwort funktioniert nicht, da sie sich auf den Titel der Nebenhandlung der letzten Achsen (unten rechts) auswirkt. Ihr Vorschlag plt.suptitle()ändert auch die letzten Achsen sowie die Hauptfigur.
xApple
0

Der Titel wird nicht mittig an den Unterplottiteln ausgerichtet. Um die Position des Titels festzulegen, können Sie verwenden plt.suptitle("Title", x=center)

In meinem Fall befanden sich meine Nebenhandlungen in einem 2x1-Raster, sodass ich bbox = g.axes[0,0].get_position()den Begrenzungsrahmen finden konnte und danncenter=0.5*(bbox.x1+bbox.x2)

ndw
quelle