删除 seaborn 线图图例标题
Remove seaborn lineplot legend title
我想从我的 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('')
如果我尝试将标题设置为 None
,我也会得到同样的结果。有趣的是,将标题设置为其他内容似乎是在现有标题之前:
ax.legend().set_title('Something else')
seaborn 似乎将标题视为隐藏的传奇条目。我该如何解决这个问题?
重要:这个答案是关于使用 hue
作为图例标题出现的情况。在所有其他情况下,问题本身已经包含摆脱标题的常用方法。
事实上,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")
Extending ImportanceOfBeingErnest 的回答:
我遇到了同样的问题,但是 'Removing the label' 示例从实际图例中删除了标题和第一项。
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, labels=labels)
import seaborn as sns
g = sns.lineplot(x="myXs", y="myYs", hue="myHue", data=mydf)
g.legend_.set_title(None)
我想从我的 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('')
如果我尝试将标题设置为 None
,我也会得到同样的结果。有趣的是,将标题设置为其他内容似乎是在现有标题之前:
ax.legend().set_title('Something else')
seaborn 似乎将标题视为隐藏的传奇条目。我该如何解决这个问题?
重要:这个答案是关于使用 hue
作为图例标题出现的情况。在所有其他情况下,问题本身已经包含摆脱标题的常用方法。
事实上,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")
Extending ImportanceOfBeingErnest 的回答:
我遇到了同样的问题,但是 'Removing the label' 示例从实际图例中删除了标题和第一项。
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, labels=labels)
import seaborn as sns
g = sns.lineplot(x="myXs", y="myYs", hue="myHue", data=mydf)
g.legend_.set_title(None)