我想从我的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('')
如果尝试将标题设置为None
,我将得到相同的结果。有趣的是,将标题设置为其他名称似乎先于现有标题:
ax.legend().set_title('Something else')
seaborn似乎将标题视为隐藏的图例条目。我该如何解决?
答案 0 :(得分:29)
的确,seaborn正在将图例标签误用作(subgroup-)标题。因此,想法可能是删除该标签,或将其替换为自定义文本。
替换为自定义文本:
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")
答案 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:])
(我无法发表评论,所以将其添加为答案)