删除seaborn lineplot图例标题

Dan*_*iel 18 python matplotlib line-plot seaborn

我想从我的seaborn lineplot图例中删除标题.我尝试使用这个答案无济于事:

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('')
Run Code Online (Sandbox Code Playgroud)

Seaborn lineplot仍然带有'event'标题

如果我尝试将标题设置为,我会得到相同的结果None.有趣的是,将标题设置为其他内容似乎优先于现有标题:

ax.legend().set_title('Something else')
Run Code Online (Sandbox Code Playgroud)

Seaborn lineplot仍然有前置标题

看起来seaborn几乎将标题视为隐藏的传奇条目.我该如何解决这个问题?

Imp*_*est 41

实际上,seaborn正在滥用传奇标签作为(子组)标题.因此,想法可以是删除此标签,或用自定义文本替换它.

替换自定义文本:

legend = ax.legend()
legend.texts[0].set_text("Whatever else")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

删除标签:

handles, labels = ax.get_legend_handles_labels()
ax.legend(handles=handles[1:], labels=labels[1:])
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

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

handles, labels = ax.get_legend_handles_labels()
ax.legend(handles=handles[1:], labels=labels[1:], title="Whatever else")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 我还需要更改图例标题,但您的建议是删除图例标题以及第一个图例条目。在您发表评论后,刚刚再次检查了 `ax.legend(handles=handles, labels=labels, title="Split")`,对于 Seaborn 0.9.0,我确信来自 `[1:]` 的索引不正确。也许您可以检查一下我们是否有版本不匹配的情况。 (3认同)

ofo*_*nes 11

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

  • 您还可以使用适当的 getter 函数,而不是通过“legend_”直接访问图例实例:“g.get_legend().set_title(None)”或“g.legend().set_title(None)” (7认同)

bad*_*uck 5

扩展ImportanceOfBeingErnest的回答:

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

handles, labels = ax.get_legend_handles_labels()
ax.legend(handles=handles[1:], labels=labels[1:])
Run Code Online (Sandbox Code Playgroud)

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

handles, labels = ax.get_legend_handles_labels()
ax.legend(handles=handles, labels=labels)
Run Code Online (Sandbox Code Playgroud)

  • 您不需要切片索引(`[0:]`),因为它没有任何效果。我认为您的解决方案只是重新创建图例_而不指定标题_。假设您首先有一个传奇标题,而“seaborn”不使用它。您是否需要此解决方案来专门修复“seaborn”图? (3认同)