首页 > 解决方案 > 删除 seaborn 线图图例标题

问题描述

我想从我的 seaborn 线图图例中删除标题。我尝试使用此答案无济于事:

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 线图仍带有“事件”标题

如果我尝试将标题设置为None. 有趣的是,将标题设置为其他东西似乎是在现有标题之前:

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

Seaborn 线图仍然带有前置标题

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

标签: pythonmatplotlibseabornline-plot

解决方案


重要提示:此答案是关于hue使用 a 并显示为图例标题的情况。在所有其他情况下,问题本身已经包含摆脱标题的常用方法。

事实上,seaborn 滥用传奇标签作为(子组)标题。因此,想法可以是删除此标签,或将其替换为自定义文本。

替换为自定义文本:

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

在此处输入图像描述

去除标签:

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

在此处输入图像描述

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

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

在此处输入图像描述


推荐阅读