删除seaborn lineplot图例标题

时间:2018-07-29 10:04:47

标签: python matplotlib seaborn line-plot

我想从我的sealine lineplot图例中删除标题。我尝试使用this answer无济于事:

import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
fmri = sns.load_dataset("fmri")
fig, ax = plt.subplots()
g = sns.lineplot(x="timepoint", y="signal", hue="event", data=fmri, ax=ax)
ax.legend().set_title('')

Seaborn lineplot still with 'event' title

如果尝试将标题设置为None,我将得到相同的结果。有趣的是,将标题设置为其他名称似乎先于现有标题:

ax.legend().set_title('Something else')

Seaborn lineplot still with prepend title

seaborn似乎将标题视为隐藏的图例条目。我该如何解决?

3 个答案:

答案 0 :(得分:29)

的确,seaborn正在将图例标签误用作(subgroup-)标题。因此,想法可能是删除该标签,或将其替换为自定义文本。

替换为自定义文本:

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

enter image description here

移除标签:

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

enter image description here

删除标签后,您当然还可以设置另一个(真实)标题:

handles, labels = ax.get_legend_handles_labels()
ax.legend(handles=handles[1:], labels=labels[1:], title="Whatever else")

enter image description here

答案 1 :(得分:4)

import seaborn as sns
g = sns.lineplot(x="myXs", y="myYs", hue="myHue", data=mydf)
g.legend_.set_title(None)

答案 2 :(得分:0)

扩展EmportanceOfBeingErnest答案:

我遇到了同样的问题,但是“删除标签”示例从实际的图例中删除了标题和第一项。

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

因此,这仅删除了图例标题

ax.legend(handles=handles[0:], labels=labels[0:])

(我无法发表评论,所以将其添加为答案)