web-dev-qa-db-fra.com

Supprimer le titre de légende Seaborn barplot

J'utilise seaborn pour tracer un graphique en barres groupé comme dans https://seaborn.pydata.org/examples/factorplot_bars.html

En me donnant: https://seaborn.pydata.org/_images/factorplot_bars.png

il y a un titre (sexe) sur la légende que je voudrais supprimer. 

Comment pourrais-je atteindre cela?

7
user113531

Cela peut être une solution astucieuse mais cela fonctionne: si vous dites à Seaborn de ne pas l'activer au moment du traçage, puis de le rajouter, il n'a pas le titre de légende:

g = sns.factorplot(x='Age Group',y='ED',hue='Became Member',col='Coverage Type',
                   col_wrap=3,data=gdf,kind='bar',ci=None,legend=False,palette='muted')
#                                                         ^^^^^^^^^^^^
plt.suptitle('ED Visit Rate per 1,000 Members per Year',size=16)
plt.legend(loc='best')
plt.subplots_adjust(top=.925)
plt.show()

Exemple de résultat: 

 enter image description here

6
bernie

Une méthode moins compliquée consiste à utiliser l'interface orientée objet de matplotlib. En prenant le contrôle des axes, il sera beaucoup plus facile de personnaliser le tracé.

import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="whitegrid")

# Load the example Titanic dataset
titanic = sns.load_dataset("titanic")

# Draw a nested barplot to show survival for class and sex
fig, ax = plt.subplots()
g = sns.factorplot(x="class", y="survived", hue="sex", data=titanic,
                   size=6, kind="bar", palette="muted", ax=ax)
sns.despine(ax=ax, left=True)
ax.set_ylabel("survival probability")
l = ax.legend()
l.set_title('Whatever you want')
fig.show()

Résulte en  resulting_plot

7
dillon

Si vous souhaitez que la légende soit affichée en dehors de l'axe du tracé, comme par défaut pour factorplot, vous pouvez utiliser FacetGrid.add_legend (factorplot renvoie une instance FacetGrid D'autres méthodes vous permettent d'ajuster les étiquettes de chaque axe de la FacetGrid à la fois

import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="whitegrid")

# Load the example Titanic dataset
titanic = sns.load_dataset("titanic")

# Draw a nested barplot to show survival for class and sex
g = sns.factorplot(x="class", y="survived", hue="sex", data=titanic,
                   size=6, kind="bar", palette="muted", legend=False)
(g.despine(left=True)
  .set_ylabels('survival probability')
  .add_legend(title='Whatever you want')
)
0
fredcallaway