web-dev-qa-db-fra.com

Supprimer le titre de la légende du tracé de ligne Seaborn

Je voudrais supprimer le titre de ma légende de tracé de ligne né en mer. J'ai essayé d'utiliser cette réponse en vain:

import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
fmri = sns.load_dataset("fmri")
fig, ax = plt.subplots()
g = sns.lineplot(x="timepoint", y="signal", hue="event", data=fmri, ax=ax)
ax.legend().set_title('')

Seaborn lineplot still with 'event' title

J'obtiens la même chose si j'essaie de définir le titre sur None. Fait intéressant, la définition du titre sur autre chose semble précéder le titre existant:

ax.legend().set_title('Something else')

Seaborn lineplot still with prepend title

Il semble presque que Seaborn traite le titre comme une entrée de légende cachée. Comment puis-je résoudre ça?

16
Daniel

En effet, Seaborn utilise abusivement une étiquette de légende comme titre (de sous-groupe). L'idée peut donc être de supprimer cette étiquette ou de la remplacer par du texte personnalisé.

Remplacement par du texte personnalisé:

legend = ax.legend()
legend.texts[0].set_text("Whatever else")

enter image description here

Suppression de l'étiquette:

handles, labels = ax.get_legend_handles_labels()
ax.legend(handles=handles[1:], labels=labels[1:])

enter image description here

Après avoir retiré l'étiquette, vous pouvez bien sûr encore définir un autre (vrai) titre:

handles, labels = ax.get_legend_handles_labels()
ax.legend(handles=handles[1:], labels=labels[1:], title="Whatever else")

enter image description here

36

Étendre la réponse ImportanceOfBeingErnest:

J'ai eu le même problème, mais l'exemple "Suppression de l'étiquette" a supprimé le titre et le premier élément de la légende actuelle.

handles, labels = ax.get_legend_handles_labels() ax.legend(handles=handles[1:], labels=labels[1:])

Donc, cela supprime juste le titre de la légende

ax.legend(handles=handles[0:], labels=labels[0:])

(Je ne peux pas commenter, donc ajoutez ceci comme réponse)

1
badluck