Edit seaborn légende
en utilisant une base de données et ce code en Python, j'ai pu créer un graphique:
g = sns.lmplot('credibility', 'percentWatched', data=data, hue = 'millennial', markers = ["+", "."], x_jitter = True, y_jitter = True, size=5)
g.set(xlabel = 'Credibility Rankingn ← Low High →', ylabel = 'Percent of Video Watched [%]')
cependant la légende dit "+ 0 "et". 1" n'est pas très utile pour les lecteurs. Comment modifier les étiquettes de la légende? Idéalement, au lieu de dire "millénaire" il serait dire "Génération" et "+ Millénaire" ". Les Générations Plus Âgées"
1 réponses
Si legend_out
est réglé sur True
ensuite, la légende est disponible g._legend
propriété et c'est une partie d'un chiffre. La légende de Seaborn est l'objet standard de la légende matplotlib. Par conséquent, vous pouvez changer des textes de légende comme:
import seaborn as sns
tips = sns.load_dataset("tips")
g = sns.lmplot(x="total_bill", y="tip", hue="smoker",
data=tips, markers=["o", "x"], legend_out = True)
# title
new_title = 'My title'
g._legend.set_title(new_title)
# replace labels
new_labels = ['label 1', 'label 2']
for t, l in zip(g._legend.texts, new_labels): t.set_text(l)
sns.plt.show()
une autre situation si legend_out
est réglé sur False
. Vous devez définir les axes a une légende (dans l'exemple ci-dessous c'est de l'axe numéro 0):
import seaborn as sns
tips = sns.load_dataset("tips")
g = sns.lmplot(x="total_bill", y="tip", hue="smoker",
data=tips, markers=["o", "x"], legend_out = False)
# check axes and find which is have legend
leg = g.axes.flat[0].get_legend()
new_title = 'My title'
leg.set_title(new_title)
new_labels = ['label 1', 'label 2']
for t, l in zip(leg.texts, new_labels): t.set_text(l)
sns.plt.show()
de plus, vous pouvez combiner les deux situations et utiliser ce code:
import seaborn as sns
tips = sns.load_dataset("tips")
g = sns.lmplot(x="total_bill", y="tip", hue="smoker",
data=tips, markers=["o", "x"], legend_out = True)
# check axes and find which is have legend
for ax in g.axes.flat:
leg = g.axes.flat[0].get_legend()
if not leg is None: break
# or legend may be on a figure
if leg is None: leg = g._legend
# change legend texts
new_title = 'My title'
leg.set_title(new_title)
new_labels = ['label 1', 'label 2']
for t, l in zip(leg.texts, new_labels): t.set_text(l)
sns.plt.show()
ce code fonctionne pour tout tracé seaborn qui est basé sur Grid
classe.