使用 Seaborn 建立不同的調色盤

Salman Mehmood 2022年5月26日
使用 Seaborn 建立不同的調色盤

本文將探討 Seaborn 調色盤的不同選項。我們還將向你展示如何在 Seaborn 中建立自定義調色盤。

使用 Seaborn 建立不同的調色盤

讓我們首先匯入 Seaborn 並將其儲存為 seaborn。我們還將從名為 tips 的 Seaborn 庫中載入一些資料。

import seaborn as seaborn

檢視 customer_bill 資料框的頂部,你會發現每個客戶留下的賬單金額和小費金額都不同。我們也有不同的特點,比如一週中的哪一天或提供那頓飯的時間。

customer_bill = seaborn.load_dataset('tips')
customer_bill.head()

seaborn 調色盤 - 輸出 1

現在我們將 set_style 設定為 darkgrid 並使用 scatterplot 函式建立散點圖。

在這個 scatterplot 函式中,我們將 total_bill 傳遞給 x 軸,而 y 軸表示 tipdata 屬性來自 customer_bill 資料框。

我們還可以將另一列,如 day 的分類列傳遞給 hue 屬性。這將在一週中的每一天分成不同的顏色。

import seaborn as seaborn
# collect data from seaborn
customer_bill = seaborn.load_dataset('tips')
customer_bill.head()
# set grid style
seaborn.set_style('darkgrid')
seaborn.scatterplot(x='total_bill', y='tip', data=customer_bill, hue='day')
# uncomment the below code if you are not using jupyter notebook
# import matplotlib.pyplot as plot
# plot.show()

seaborn 調色盤 - 輸出 2

如果你注意到,Seaborn 在散點圖中使用其預設調色盤。我們可以使用 color_palette() 函式檢查預設 Seaborn 的調色盤。

seaborn.color_palette()

這將顯示 Seaborn 用於前四種顏色的預設調色盤。

seaborn 調色盤 - 輸出 3

我們可以在 color_palette() 函式中傳遞幾個選項。如果我們傳遞一個有效的字串名稱,例如 Pastel2,我們將看到其他調色盤。

seaborn.color_palette("Pastel2")

seaborn 調色盤 - 輸出 4

我們可以使用不同的命名調色盤。我們只需要新增這個 palette 引數並將其設定為等於有效的調色盤名稱。

seaborn.set_style('whitegrid')
seaborn.scatterplot(x='total_bill', y='tip', data=customer_bill, hue='day',palette='Pastel2')

seaborn 調色盤 - 輸出 5

目前我們可以在 Seaborn 中使用 170 種不同的命名調色盤。如果你忘記了他們的名字,你不必去找他們;你可以傳遞無效的調色盤名稱,例如:

seaborn.scatterplot(x='total_bill', y='tip', data=customer_bill, hue='day',palette='GH')

輸出:

seaborn 調色盤 - 輸出 6

如果你注意到其中很多帶有 _r。這些是相同的調色盤,但順序相反。

seaborn.color_palette("Pastel2_r")

seaborn 調色盤 - 輸出 7

如果我們不傳遞調色盤引數,那麼 Seaborn 會設定預設的調色盤顏色。

seaborn.scatterplot(x='total_bill', y='tip', data=customer_bill)

seaborn 調色盤 - 輸出 8

如果我們想更新這些點的顏色,我們將其稱為 color。它不是調色盤;它是一種顏色,因為我們在整個圖形中只有一種顏色,但請注意如果我們將這種顏色切換為藍色字串會發生什麼。

seaborn.scatterplot(x='total_bill', y='tip', data=customer_bill,color='blue')

這是 Matplotlib 藍色,而不是 Seaborn 藍色。

seaborn 調色盤 - 輸出 9

假設我們想使用 color_palette() 函式提取 Seaborn 藍色,並選擇前兩種顏色。這給了我們第一個元組,藍色,第二個,橙色。

BLUE, ORANGE = seaborn.color_palette()[:2]
seaborn.scatterplot(x='total_bill', y='tip', data=customer_bill,color=BLUE)

seaborn 調色盤 - 輸出 10

在 Seaborn 中建立自定義調色盤

我們可以在 Seaborn 中基於單一顏色或混合多種顏色建立自定義調色盤。我們甚至可以建立一個突出顯示某個特定類別的調色盤。

我們可以通過多種方式使用 Seaborn 建立自定義調色盤。如果我們需要這個調色盤中的其他顏色,我們可以傳遞一個整數。

seaborn.color_palette("Pastel2",10)

seaborn 調色盤 - 輸出 11

我們還可以通過訪問 light_palette() 函式來建立我們的調色盤,該方法接受一種命名顏色。此調色盤包含一種顏色的不同深淺。

seaborn.light_palette('gray')

seaborn 調色盤 - 輸出 12

Seaborn 有一個建立深色調色盤的 dark_palette() 函式。顏色從較暗的陰影開始,然後上升到指定的顏色。

seaborn.dark_palette('red')

seaborn 調色盤 - 輸出 13

Seaborn 還允許我們使用這個 blend_palette() 函式建立不同的調色盤,引數將是一個顏色列表。這將建立一個調色盤,混合我們在列表中傳遞的所有顏色。

seaborn.blend_palette(['blue', 'red', 'green'], 12)

seaborn 調色盤 - 輸出 14

讓我們將 blend_palette() 傳遞給調色盤引數。執行此操作時可能會出現錯誤,因為 blend_palette() 的預設顏色數為六,但我們的 day 列中只有四個不同的類別。

seaborn.scatterplot(x='total_bill',
                    y='tip',
                    data=customer_bill,
                    hue='day',
                    palette=seaborn.blend_palette(['green','red']))

輸出:

seaborn 調色盤 - 輸出 15

我們需要傳遞一個整數,因為我們的 day 列類別存在。

seaborn.scatterplot(x='total_bill',
                    y='tip',
                    data=customer_bill,
                    hue='day',
                    palette=seaborn.blend_palette(['green','red'],4))

seaborn 調色盤 - 輸出 16

Seaborn 為我們提供了使用突出顯示調色盤的選項,只要我們想強調一個或兩個類別,就會使用它。我們將為每個獨特的日子建立一個調色盤字典。

P_DICT = {k: 'gray' for k in customer_bill.day.unique()}
P_DICT

那天的名字將是這個字典的關鍵。

seaborn 調色盤 - 輸出 17

如果我們想在圖中突出顯示星期五,我們可以為我們感興趣的任何類別分配一個新值 red

P_DICT['Fri']='red'
seaborn.scatterplot(x='total_bill',
                    y='tip',
                    data=customer_bill,
                    hue='day',
                    palette=P_DICT)

我們可以看到除了星期五之外所有的日子都是灰色的,用紅色著色。如果我們想突出某一天,這可能很有用。

seaborn 調色盤 - 輸出 18

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

相關文章 - Seaborn Color