Comment ajouter un titre à Seaborn Facet Plot

96

Comment ajouter un titre à ce tracé Seaborne? Donnons-lui un titre «JE SUIS UN TITRE».

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

terrain

Je ne suis pas George
la source

Réponses:

167

Après ces lignes:

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

Si vous ajoutez un sous-titre sans ajuster l'axe, les titres des facettes Seaborn le chevauchent.

(Avec des données différentes):

entrez la description de l'image ici

cphlewis
la source
6
Cela a fonctionné pour moi, mais j'ai dû utiliser à la plt.subplots_adjust(top=0.8)place de top=0.9.
Mack
5
suptitlea également un yparamètre. Cela a fonctionné pour moi:g.fig.suptitle('foo', y=1.05)
trianta2
1
Cela ne fonctionne pas si vous utilisez col_wrapcomme alors la figure et le sous-tracé des derniers axes (en bas à droite) hériteront du même titre.
xApple
25

Dans le cahier ipython, cela a fonctionné pour moi!

sns.plt.title('YOUR TITLE HERE')
Meera Lakhavani
la source
10
J'ai essayé cela et cela a ajouté un titre à la figure en bas à droite, pas à la figure entière
crypdick
12
L'accès pltvia le snspackage est obsolète dans la version 0.8.1. Cela devrait être fait en utilisantplt.title('YOUR TITLE HERE')
Mack
2
AttributeError: le module 'seaborn' n'a pas d'attribut 'plt'
xApple
AttributeError: le module 'seaborn' n'a pas d'attribut 'plt'
seralouk
3

Ce qui a fonctionné pour moi était:

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

pmetzner
la source
2
AttributeError: le module 'seaborn' n'a pas d'attribut 'plt'
xApple
1
AttributeError: le module 'seaborn' n'a pas d'attribut 'plt'
seralouk
1
plt.suptitle("Title") 

ou

plt.title("Title")

Cela a fonctionné pour moi.

Vraj Patel
la source
La deuxième solution ne fonctionne pas, tandis que la première solution crée un intercalaire laid de titres de sous-titres et de facettes. Vous devez utiliser en utilisant des coordonnées.
MERose
0

Les réponses utilisant sns.plt.title()et sns.plt.suptitle()ne fonctionnent plus.

Au lieu de cela, vous devez utiliser la title()fonction de matplotlib :

import matplotlib.pyplot as plt
sns.FacetGrid(<whatever>)
plt.title("A title")
crypdick
la source
1
Cela ne définit pas le titre au bon endroit pour moi.
Gabriel Romon
4
Avez-vous essayé plt.suptitle()?
crypdick
Votre réponse ne fonctionne pas car elle affecte le titre du dernier sous-tracé des axes (en bas à droite). Votre suggestion plt.suptitle()modifie également les derniers axes ainsi que la figure principale.
xApple
0

Le titre ne sera pas aligné au centre avec les titres de la sous-parcelle. Pour définir la position du titre, vous pouvez utiliser plt.suptitle("Title", x=center)

Dans mon cas, mes sous-parcelles étaient dans une grille 2x1, donc j'ai pu utiliser bbox = g.axes[0,0].get_position()pour trouver la boîte englobante, puiscenter=0.5*(bbox.x1+bbox.x2)

ndw
la source