Seaborn lineplot图例标题设置

在进行lineplot()绘制折线图的时候,如果用了hue参数同时绘制多个类别图,这时候seaborn会把这个hue的标签当做图例的子标题。本文介绍了几个修改、删除此不需要的图例标题的方法。

一、问题描述

下面是我的lineplot()代码,如果此方法用了hue参数同时绘制多个类别图,这时候seaborn会把这个hue的标签当做子标题。

1
sns.lineplot(x="time", y="value", hue="category", data=df)

如果我用下面的方法,会产生一个新图例的标题,原来的图例标题并没有被修改:

1
ax.legend().set_title('title')

二、问题分析

seaborn会错误的把图例的标题当做一个subgroup-title。

seaborn is misusing a legend label as a (subgroup-)title.

三、解决方法

1、修改此子标题方法

1
2
legend = ax.legend()  
legend.texts[0].set_text("Whatever else")

2、移除此子标题方法

1
2
handles, labels = ax.get_legend_handles_labels()
ax.legend(handles=handles[1:], labels=labels[1:])

3、去掉子标题,加上真正的标题方法

1
2
handles, labels = ax.get_legend_handles_labels()
ax.legend(handles=handles[1:], labels=labels[1:], title="Whatever else")
赞赏一杯咖啡
0%