web-dev-qa-db-fra.com

Déplacer la légende du complot marin dans une position différente?

J'utilise factorplot(kind="bar") avec seaborn.

L'intrigue est bien sauf que la légende est mal placée: trop à droite, le texte sort de la zone ombrée de l'intrigue.

Comment faire pour que Seaborn place la légende ailleurs, par exemple dans le coin supérieur gauche au lieu du milieu droit?

35
user124114

S'appuyant sur la réponse de @ user308827: vous pouvez utiliser legend=False dans la représentation graphique et spécifiez la légende via matplotlib:

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

titanic = sns.load_dataset("titanic")

g = sns.factorplot("class", "survived", "sex",
                   data=titanic, kind="bar",
                   size=6, palette="muted",
                   legend=False)
g.despine(left=True)
plt.legend(loc='upper left')
g.set_ylabels("survival probability")
32
Jules

Modification de l'exemple ici :

Vous pouvez utiliser legend_out = False

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

titanic = sns.load_dataset("titanic")

g = sns.factorplot("class", "survived", "sex",
                    data=titanic, kind="bar",
                    size=6, palette="muted",
                   legend_out=False)
g.despine(left=True)
g.set_ylabels("survival probability")

enter image description here

13
user308827

Découvrez la documentation ici: https://matplotlib.org/users/legend_guide.html#legend-location

en ajoutant ceci a simplement contribué à faire sortir la légende de l'intrigue:

plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)

7
leonard

Voici comment j'ai pu déplacer la légende à un endroit particulier de l'intrigue et changer l'aspect et la taille de l'intrigue:

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
matplotlib.style.use('ggplot')
import seaborn as sns
sns.set(style="ticks")

figure_name = 'rater_violinplot.png'
figure_output_path = output_path + figure_name

viol_plot = sns.factorplot(x="Rater", 
                       y="Confidence", 
                       hue="Event Type", 
                       data=combo_df, 
                       palette="colorblind",
                       kind='violin',
                       size = 10,
                       aspect = 1.5,
                       legend=False)

viol_plot.ax.legend(loc=2)
viol_plot.fig.savefig(figure_output_path)  

Legend location changed

Cela m'a permis de changer la taille et l'aspect de l'intrigue, ainsi que de déplacer la légende en dehors de la zone de l'intrigue.

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
matplotlib.style.use('ggplot')
import seaborn as sns
sns.set(style="ticks")


figure_name = 'rater_violinplot.png'
figure_output_path = output_path + figure_name

viol_plot = sns.factorplot(x="Rater", 
                       y="Confidence", 
                       hue="Event Type", 
                       data=combo_df, 
                       palette="colorblind",
                       kind='violin',
                       size = 10,
                       aspect = 1.5,
                       legend_out=True)

viol_plot.fig.savefig(figure_output_path)  

violin plot with changed size, aspect and legend located outside

J'ai compris cela à partir de la réponse de mwaskom ici et de la réponse de Fernando Hernandez ici .

5
denson