Como adicionar um título ao Seaborn Facet Plot

95

Como adiciono um título a este enredo Seaborne? Vamos dar a ele o título 'EU SOU UM TÍTULO'.

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

enredo

Eu não sou george
fonte

Respostas:

164

Depois dessas linhas:

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

Se você adicionar um subtítulo sem ajustar o eixo, os títulos das facetas do mar se sobrepõem a ele.

(Com dados diferentes):

insira a descrição da imagem aqui

cphlewis
fonte
6
Isso funcionou para mim, mas eu tive que usar em plt.subplots_adjust(top=0.8)vez de top=0.9.
Mack de
5
suptitletambém tem um yparâmetro. Isso funcionou para mim:g.fig.suptitle('foo', y=1.05)
trianta2
1
Isso não funciona se você usar col_wrapcomo então a figura e o subplot do último eixo (canto inferior direito) herdarão o mesmo título.
xApple
25

No notebook ipython, isso funcionou para mim!

sns.plt.title('YOUR TITLE HERE')
Meera Lakhavani
fonte
10
Eu tentei isso e adicionou um título à figura inferior direita, não a figura inteira
crypdick
12
O acesso pltpor meio do snspacote tornou-se obsoleto na versão 0.8.1. Isso deve ser feito usandoplt.title('YOUR TITLE HERE')
Mack
2
AttributeError: o módulo 'seaborn' não tem o atributo 'plt'
xApple
AttributeError: módulo 'seaborn' não tem atributo 'plt'
seralouk
3

O que funcionou para mim foi:

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

pmetzner
fonte
2
AttributeError: módulo 'seaborn' não tem atributo 'plt'
xApple
1
AttributeError: módulo 'seaborn' não tem atributo 'plt'
seralouk
1
plt.suptitle("Title") 

ou

plt.title("Title")

Isso funcionou para mim.

Vraj Patel
fonte
0

As respostas usando sns.plt.title()e sns.plt.suptitle()não funcionam mais.

Em vez disso, você precisa usar a title()função matplotlib :

import matplotlib.pyplot as plt
sns.FacetGrid(<whatever>)
plt.title("A title")
crypdick
fonte
1
Isso não define o título no local correto para mim.
Gabriel Romon de
4
Você tentou plt.suptitle()?
crypdick de
Sua resposta não funciona, pois afeta o título da última subtrama dos eixos (canto inferior direito). Sua sugestão plt.suptitle()também modifica os últimos eixos, bem como a figura principal.
xApple
0

O título não será alinhado ao centro com os títulos da subtrama. Para definir a posição do título, você pode usar plt.suptitle("Title", x=center)

No meu caso, meus subtramas estavam em uma grade 2x1, então pude usar bbox = g.axes[0,0].get_position()para encontrar a caixa delimitadora ecenter=0.5*(bbox.x1+bbox.x2)

ndw
fonte