Seaborn 繪圖中的圖例

Manav Narula 2022年12月21日
Seaborn 繪圖中的圖例

圖例通常是一個小盒子,它出現在圖形的某個角上,用於說明繪圖的不同元素。並且,如果圖中有多個資料,那麼它將告訴哪個元件代表哪個資料。

在本教程中,我們將學習如何為簡單的 Seaborn 圖新增或自定義圖例。

預設情況下,seaborn 自動將圖例新增到圖形中。

例如,

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame(
    {"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)

sns.lineplot(data=df)

seaborn 圖例 1

請注意,圖例位於右上角。

如果要顯式新增圖例,則可以使用 matplotlib 庫中的 legend() 函式。這樣,我們可以顯式新增我們自己的標籤。

例如,

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame(
    {"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)

sns.lineplot(data=df)
plt.legend(labels=["Legend_Day1", "Legend_Day2"])

seaborn 圖例 2

請注意,seaborn 庫基於並使用 matplotlib 模組建立其圖。因此,我們也可以對 Seaborn 圖使用 legend() 函式。

我們還可以對圖例進行小的定製。例如,我們可以使用 legend() 函式中的 title 引數為圖例新增標題,如下所示。

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame(
    {"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)

sns.lineplot(data=df)
plt.legend(labels=["Legend_Day1", "Legend_Day2"], title="Title_Legend")

seaborn 圖例 3

fontsizetitle_fontsize 是分別用於更改圖例及其標題中內容字型的兩個引數。

請參見下面的程式碼。

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame(
    {"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)

sns.lineplot(data=df)
plt.legend(
    labels=["Legend_Day1", "Legend_Day2"],
    title="Title_Legend",
    fontsize="large",
    title_fontsize="10",
)

seaborn 圖例 4

請注意,每個版本的 matplotlib 中都不存在 title_fontsize,因此請在使用前檢查你的版本。

我們可以使用 locbbox_to_anchor 引數指定圖例框的大小和位置。

loc 用於指定圖例的位置。不同的數字指定不同的位置。預設情況下,其值為 0,這意味著它將搜尋最佳位置以將圖例放置在發生最小重疊的位置。

bbox_to_anchor 相對於 loc 引數中指定的位置指定圖例的位置。如果我們用 2 個元素元組設定 bbox_to_anchor 引數,則它將其值視為沿指定 loc 定位的 x 和 y 值。

例如,

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame(
    {"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)

sns.lineplot(data=df)
plt.legend(labels=["Legend_Day1", "Legend_Day2"], loc=2, bbox_to_anchor=(1, 1))

seaborn 圖例 5

請注意,loc 引數的值為 2,表示左上角的位置。

作者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

相關文章 - Seaborn Legend