Переместить легенду легендарного сюжета на другую позицию?
Я использую factorplot(kind="bar")
с морским дном.
Сюжет прекрасен, за исключением того, что легенда неуместна: слишком много вправо, текст выходит из затененной области сюжета.
Как сделать морскую обивку легендой где-нибудь еще, например, в левом верхнем углу, а не в среднем праве?
Ответы
Ответ 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 здесь, и Фернандо Эрнандес ответил здесь.