在 Python 中移动 Seaborn 图中的图例

Moving the Legend in a Seaborn Graph in Python

使用这段代码,我生成了下图:

g = sns.lmplot('credibility', 'percentWatched', data=data, hue = 'gender', markers = [".", "."], x_jitter = True, y_jitter = True, size=5, palette="Set2", scatter_kws={'alpha': 0.2})
g.set(xlabel = 'Credibility Ranking\n ← Low       High  →', ylabel = 'Percent of Video Watched [%]')
g.set(xlim=(1, 7))

new_title = 'Gender'
g._legend.set_title(new_title)
# replace labels
new_labels = ['Male', 'Female']
for t, l in zip(g._legend.texts, new_labels): t.set_text(l)

如您所见,图例与实际图表重叠。我怎样才能将图例移到更右边,以便您可以看到完整的图例?

Seaborn 不擅长处理图例,如果你有这个问题,请关闭 seaborn 中的图例 (legend = False) 并尝试通过 matplotlib 覆盖它。

g = sns.lmplot('credibility', 'percentWatched', data=data, legend = False, hue = 'gender', markers = [".", "."], x_jitter = True, y_jitter = True, size=5, palette="Set2", scatter_kws={'alpha': 0.2})
g.set(xlabel = 'Credibility Ranking\n ← Low       High  →', ylabel = 'Percent of Video Watched [%]')
g.set(xlim=(1, 7))

# replace labels
new_labels = ['Male', 'Female']
plt.legend(bbox_to_anchor=(1.05, 0.5), title='Gender', labels = new_labels)

希望对您有所帮助。

就像在创建剧情后设置图例标题一样,您也可以更改图例位置。

g._legend.set_bbox_to_anchor((1.13,.8))