如何在Seaborn中控制图例-Python

发布于 2021-01-29 16:40:38

我正在尝试查找有关如何控制和自定义Seaborn地块中图例的指南,但我找不到任何指南。

为了使问题更具体,我提供了一个可重现的示例:

surveys_by_year_sex_long

    year    sex wgt
0   2001    F   36.221914
1   2001    M   36.481844
2   2002    F   34.016799
3   2002    M   37.589905

%matplotlib inline
from matplotlib import *
from matplotlib import pyplot as plt
import seaborn as sn

sn.factorplot(x = "year", y = "wgt", data = surveys_by_year_sex_long, hue = "sex", kind = "bar", legend_out = True,
             palette = sn.color_palette(palette = ["SteelBlue" , "Salmon"]), hue_order = ["M", "F"])
plt.xlabel('Year')
plt.ylabel('Weight')
plt.title('Average Weight by Year and Sex')

在此处输入图片说明

在此示例中,我希望能够将M定义为Male,将F定义为Female,而不是将sex用作图例的标题。

您的建议将不胜感激。

关注者
0
被浏览
51
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    首先,要访问由seaborn创建的图例,需要通过seaborn调用来完成。

    g = sns.factorplot(...)
    legend = g._legend
    

    然后可以操纵这个传说

    legend.set_title("Sex")
    for t, l in zip(legend.texts,("Male", "Female")):
        t.set_text(l)
    

    结果并不完全令人满意,因为图例中的字符串比以前大,因此图例将与情节重叠

    在此处输入图片说明

    因此,还需要稍微调整图形边距,

    g.fig.subplots_adjust(top=0.9,right=0.7)
    

    在此处输入图片说明



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看