簡體   English   中英

刪除seaborn lineplot圖例標題

[英]Remove seaborn lineplot legend title

我想從我的 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('')

Seaborn 線圖仍然帶有“事件”標題

如果我嘗試將標題設置為None我會得到相同的結果。 有趣的是,將標題設置為其他內容似乎是在現有標題的前面:

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

Seaborn 線圖仍然帶有前置標題

看起來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")

在此處輸入圖片說明

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

擴展ImportanceOfBeingErnest的回答:

我遇到了同樣的問題,但“刪除標簽”示例從實際圖例中刪除了標題和第一項。

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM