Seaborn 繪圖中的圖例

Manav Narula 2022年12月21日 2021年4月29日
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,表示左上角的位置。

Author: 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