Подтвердить что ты не робот

Переместить легенду легендарного сюжета на другую позицию?

Я использую factorplot(kind="bar") с морским дном.

Сюжет прекрасен, за исключением того, что легенда неуместна: слишком много вправо, текст выходит из затененной области сюжета.

Как сделать морскую обивку легендой где-нибудь еще, например, в левом верхнем углу, а не в среднем праве?

4b9b3361

Ответ 1

Основываясь на ответе @user308827: вы можете использовать legend=False в factorplot и указать легенду через 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")

Ответ 2

Модифицируя пример здесь:

Вы можете использовать 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

Ответ 3

Проверьте документы здесь: https://matplotlib.org/users/legend_guide.html#legend-location

добавление этого просто сработало, чтобы вывести легенду из сюжета:

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

Ответ 4

Вот как я смог переместить легенду в определенное место внутри сюжета и изменить размер и размер сюжета:

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)  

Изменено местоположение легенды

Это помогло мне изменить размер и аспект сюжета, а также переместить легенду за пределы области графика.

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)  

скрипка с измененным размером, аспект и легенда, расположенные за пределами

Я понял это из mwaskom answer здесь, и Фернандо Эрнандес ответил здесь.