Seaborn 建立在 Matplotlib 之上,提供更簡潔易用的介面來繪製統計圖表。它能輕鬆處理 Pandas DataFrame,並提供多種內建資料集方便測試和學習。除了預設風格外,Seaborn 還允許開發者自定義圖表主題、顏色、字型等,更深入地控制圖表外觀。熱圖能清晰地呈現變數間的相關性,而箱型圖則有助於理解單一變數在不同類別下的分佈差異。此外,Seaborn 提供豐富的調色盤選項,包含 HLS、HUSL 等色彩模型,以及序列、分歧等調色盤型別,讓圖表更具資訊價值和視覺吸引力。這些功能讓 Seaborn 成為 Python 資料視覺化的強大工具。

Seaborn 內建資料集

Seaborn 提供了多個內建資料集,可以用於資料視覺化和分析。這些資料集可以透過 seaborn.get_dataset_names() 函式載入為 Pandas DataFrame。以下是載入內建資料集的範例:

import seaborn as sns

# 列出所有內建資料集
print(sns.get_dataset_names())

輸出結果將顯示所有可用的內建資料集,包括 anagramsanscombeattention 等。

Seaborn 圖表風格

Seaborn 提供了多種圖表風格,可以用於自定義圖表的外觀。這包括了顏色調色盤(color palettes)、字型大小、線寬等。以下是設定圖表風格的範例:

import seaborn as sns
import matplotlib.pyplot as plt

# 設定圖表風格
sns.set_style("whitegrid")

# 繪製圖表
plt.plot([1, 2, 3, 4, 5])
plt.show()

這將產生一個具有白色網格背景的圖表。

熱圖(Heatmap)

熱圖是一種用於顯示資料關係的圖表,通常用於展示兩個變數之間的相關性。以下是繪製熱圖的範例:

import seaborn as sns
import matplotlib.pyplot as plt

# 載入內建資料集
tips = sns.load_dataset("tips")

# 繪製熱圖
plt.figure(figsize=(10, 8))
sns.heatmap(tips.corr(), annot=True, cmap="coolwarm", square=True)
plt.show()

這將產生一個顯示 tips 資料集中各變數之間相關性的熱圖。

箱型圖(Boxplot)

箱型圖是一種用於顯示資料分佈的圖表,通常用於展示單一變數的分佈情況。以下是繪製箱型圖的範例:

import seaborn as sns
import matplotlib.pyplot as plt

# 載入內建資料集
tips = sns.load_dataset("tips")

# 繪製箱型圖
plt.figure(figsize=(10, 8))
sns.boxplot(x="day", y="total_bill", data=tips)
plt.show()

這將產生一個顯示 tips 資料集中 total_bill 變數在不同 day 的分佈情況的箱型圖。

內容解密:

以上程式碼示範瞭如何使用 Seaborn 載入內建資料集、設定圖表風格、繪製熱圖和箱型圖。透過這些範例,可以瞭解 Seaborn 的基本功能和應用。

使用Seaborn載入內建資料集

Seaborn是一個根據Matplotlib的Python資料視覺化函式庫,提供了多種內建資料集以便使用者進行資料分析和視覺化。要載入Seaborn的內建資料集,可以使用load_dataset()函式。

載入內建資料集

以下是載入內建資料集的語法:

load_dataset(name, cache=True, data_home=None, **kws)

其中:

  • name: 指定要載入的資料集名稱。
  • data_home: 定義一個自訂目錄路徑來儲存或讀取資料集。
  • cache: 決定是否將資料集快取到本地以便未來更快地存取(預設為True)。
  • **kws: 允許額外的關鍵字引數以進行資料集特定的選項或組態。

Plot樣式設定

Seaborn的Plot樣式可以分為兩個獨立的群組:美學樣式(aesthetic plot style)和元素縮放(scaling of various elements)。美學樣式用於自訂Plot的外觀,例如背景色、刻度標記色、標籤色、字型型別等。

以下是設定Plot樣式的範例:

import seaborn as sns
import matplotlib.pyplot as plt

# 載入資料集
sns_dset = sns.load_dataset('geyser')

# 設定Plot樣式
sns.set_style(style='ticks', rc={'axes.edgecolor': 'black'})

# 繪製散點圖
sns.scatterplot(x='duration', y='waiting', data=sns_dset)

# 設定標題
plt.title('Selecting Ticks theme')

# 顯示Plot
plt.show()

這個範例載入了geyser資料集,設定了Plot樣式為ticks,並繪製了一個散點圖。

Plot主題設定

Seaborn提供了五種不同的Plot主題:darkgridwhitegriddarkwhiteticks。可以使用set_style()函式來設定Plot主題。

以下是設定Plot主題的範例:

sns.set_style(style='ticks')

這個範例設定了Plot主題為ticks

輸出結果

設定Plot樣式和主題後,Seaborn會根據設定的樣式和主題來繪製Plot。以下是輸出結果:

{'axes.facecolor': 'white', 'axes.edgecolor': 'black',
 'axes.grid': False, 'axes.axisbelow': 'line',
 'axes.labelcolor': 'black', 'figure.facecolor': 'white',
 'ytick.direction': 'out', 'lines.solid_capstyle': <CapStyle.projecting: 'projecting'>,
 'patch.edgecolor': 'black', 'patch.force_edgecolor': False,
 'image.cmap': 'viridis', 'font.family': ['sans-serif'],
 'font.sans-serif': ['DejaVu Sans', 'Bitstream Vera Sans', 'Computer Modern Sans Serif',
  'Lucida Grande', 'Verdana', 'Geneva', 'Lucid', 'Arial', 'Helvetica',
  'Avant Garde', 'sans-serif'],
 'xtick.bottom': True, 'xtick.top': False,
 'ytick.left': True, 'ytick.right': False,
 'axes.spines.left': True, 'axes.spines.bottom': True,
 'axes.spines.right': True, 'axes.spines.top': True}

這個輸出結果顯示了設定的Plot樣式和主題。

自定義視覺化風格與上下文

在進行資料視覺化時,選擇合適的風格和上下文設定對於呈現資料至關重要。Seaborn 和 Matplotlib 等函式庫提供了豐富的工具來自定義視覺化的外觀和感受。

視覺化風格設定

首先,我們來看一下如何設定視覺化的風格。Seaborn 提供了多種預設風格,包括 “darkgrid”、“whitegrid”、“dark”、“white” 和 “ticks” 等。這些風格可以透過 set_style() 函式來設定。例如,要設定為 “ticks” 風格,可以使用 mysns.set_style("ticks")

上下文設定

除了風格,Seaborn 還允許我們設定視覺化的上下文(context)。上下文決定了圖表中元素的大小,包括標籤、標題和線寬等。Seaborn 提供了四種預設上下文:“paper”、“notebook”、“talk” 和 “poster”。這些上下文可以透過 set_context() 函式來設定。例如,要設定為 “poster” 上下文,可以使用 mysns.set_context("poster")

自定義上下文引數

除了使用預設上下文外,Seaborn 還允許我們自定義上下文引數。這可以透過 set_context() 函式的 rc 引數來實作。rc 引數接受一個字典,字典中的鍵值對應於不同的上下文引數。例如,要設定 “poster” 上下文並自定義標籤大小和標題大小,可以使用如下程式碼:

mysns.set_context(context='poster', rc={'axes.labelsize': 10.0, 'axes.titlesize': 15.0, 'grid.linewidth': 3.0})

這段程式碼設定了 “poster” 上下文,並將標籤大小設為 10.0,標題大小設為 15.0,網格線寬設為 3.0。

實際應用

讓我們透過一個實際例子來看看如何應用這些設定。假設我們想要建立一個散點圖,展示行星的品質和距離之間的關係。我們可以使用 Seaborn 的 scatterplot() 函式來建立這個圖表,並設定適當的風格和上下文。

import seaborn as mysns
import matplotlib.pyplot as myplt

# 載入行星資料集
mysns_dset = mysns.load_dataset('planets')

# 設定視覺化風格和上下文
mysns.set_style("white")
mysns.set_context(context='poster', rc={'axes.labelsize': 10.0, 'axes.titlesize': 15.0, 'grid.linewidth': 3.0})

# 建立散點圖
mysns.scatterplot(x='mass', y='distance', data=mysns_dset)

# 設定標題
myplt.title('行星品質和距離關係')

# 顯示圖表
myplt.show()

這段程式碼建立了一個散點圖,展示行星的品質和距離之間的關係,並設定了適當的風格和上下文,使圖表更易於閱讀和理解。

內容解密:

  • mysns.set_style("white"):設定視覺化風格為 “white”。
  • mysns.set_context(context='poster', rc={'axes.labelsize': 10.0, 'axes.titlesize': 15.0, 'grid.linewidth': 3.0}):設定上下文為 “poster”,並自定義標籤大小、標題大小和網格線寬。
  • mysns.scatterplot(x='mass', y='distance', data=mysns_dset):建立散點圖,展示行星的品質和距離之間的關係。
  • myplt.title('行星品質和距離關係'):設定圖表標題。
  • myplt.show():顯示圖表。

圖表翻譯:

此圖表展示了行星的品質和距離之間的關係,使用 Seaborn 的散點圖功能建立。圖表設定了 “white” 風格和 “poster” 上下文,並自定義了標籤大小、標題大小和網格線寬,使圖表更易於閱讀和理解。

使用Seaborn進行資料視覺化

Seaborn是一個根據Matplotlib的Python資料視覺化函式庫,提供了一個高階介面來建立資訊豐富且吸引人的統計圖形。下面我們將探討如何使用Seaborn進行資料視覺化,包括散點圖、顏色調色盤等。

散點圖

散點圖是用於展示兩個變數之間關係的常用圖形。下面的例子展示瞭如何使用Seaborn建立一個散點圖:

import seaborn as sns
import matplotlib.pyplot as plt

# 載入資料集
tips = sns.load_dataset("tips")

# 建立散點圖
sns.scatterplot(x="total_bill", y="tip", data=tips)

# 設定標題
plt.title("Total Bill vs. Tip")

# 顯示圖形
plt.show()

這個例子建立了一個散點圖,展示了總帳單(total_bill)和小費(tip)之間的關係。

顏色調色盤

顏色調色盤是Seaborn的一個重要功能,允許使用者自定義圖形的顏色。下面的例子展示瞭如何使用顏色調色盤:

import seaborn as sns
import matplotlib.pyplot as plt

# 建立一個顏色調色盤
palette = sns.color_palette("husl", 8)

# 建立一個圖形
sns.set_style("whitegrid")
sns.scatterplot(x="total_bill", y="tip", data=tips, palette=palette)

# 設定標題
plt.title("Total Bill vs. Tip")

# 顯示圖形
plt.show()

這個例子建立了一個顏色調色盤,包含8種不同的顏色,並將其應用於散點圖。

去除軸框

在某些情況下,可能需要去除軸框以獲得更簡潔的圖形。下面的例子展示瞭如何使用despine()函式去除軸框:

import seaborn as sns
import matplotlib.pyplot as plt

# 載入資料集
tips = sns.load_dataset("tips")

# 建立散點圖
sns.scatterplot(x="total_bill", y="tip", data=tips)

# 去除軸框
sns.despine()

# 設定標題
plt.title("Total Bill vs. Tip")

# 顯示圖形
plt.show()

這個例子去除了軸框,獲得了一個更簡潔的圖形。

HSL顏色模型

HSL顏色模型是一種根據色相、飽和度和亮度的顏色模型。下面的例子展示瞭如何使用HSL顏色模型:

import seaborn as sns
import matplotlib.pyplot as plt

# 建立一個HSL顏色模型
hsl_palette = sns.color_palette("hls", 8)

# 建立一個圖形
sns.set_style("whitegrid")
sns.scatterplot(x="total_bill", y="tip", data=tips, palette=hsl_palette)

# 設定標題
plt.title("Total Bill vs. Tip")

# 顯示圖形
plt.show()

這個例子建立了一個HSL顏色模型,包含8種不同的顏色,並將其應用於散點圖。

資料視覺化中的色彩調色盤

在資料視覺化中,色彩調色盤扮演著重要的角色。它們能夠幫助我們更好地理解和呈現資料,尤其是在展示不同類別的資料時。這裡,我們將探討兩種主要的色彩調色盤型別:質性調色盤和序列調色盤。

質性調色盤

質性調色盤用於展示沒有特定順序的類別資料。這種調色盤的特點是能夠根據需要產生任意數量的顏色,以適應不同的類別數量。下面的程式碼示範瞭如何使用Seaborn函式庫生成一個質性調色盤:

import seaborn as sns
import matplotlib.pyplot as plt

# 生成一個包含6種顏色的質性調色盤
color_palette = sns.color_palette("husl", 6)

# 列印調色盤
print(color_palette)

# 繪製調色盤
sns.palplot(color_palette)

# 顯示繪製結果
plt.show()

這段程式碼會生成一個包含6種顏色的質性調色盤,並將其繪製出來。結果如下:

[(0.12156862745098039, 0.4666666666666667, 0.7058823529411765), (1.0, 0.4980392156862745, 0.054901960784313725), (0.17254901960784313, 0.6274509803921569, 0.17254901960784313), (0.8392156862745098, 0.15294117647058825, 0.1568627450980392), (0.5803921568627451, 0.403921568627451, 0.7411764705882353), (0.5490196078431373, 0.33725490196078434, 0.29411764705882354)]

序列調色盤

序列調色盤則用於展示具有順序關係的資料,例如時間序列資料或排名資料。這種調色盤的特點是能夠根據資料的順序關係生成一系列的顏色,以便更好地展示資料的趨勢和變化。

HSL和HUSL色彩模型

在質性調色盤中,還有兩種重要的色彩模型:HSL(Hue, Saturation, Lightness)和HUSL(Hue, Saturation, Lightness with uniform perception)。這兩種模型都能夠根據不同的引數生成不同的顏色,但它們在顏色的選擇和組合上有所不同。

下面的程式碼示範瞭如何使用HSL和HUSL色彩模型生成質性調色盤:

import seaborn as sns
import matplotlib.pyplot as plt

# 使用HSL色彩模型生成一個質性調色盤
hsl_palette = sns.color_palette("hls", 6)

# 使用HUSL色彩模型生成一個質性調色盤
husl_palette = sns.color_palette("husl", 6)

# 繪製HSL和HUSL調色盤
sns.palplot(hsl_palette)
sns.palplot(husl_palette)

# 顯示繪製結果
plt.show()

這段程式碼會生成兩個質性調色盤,一個使用HSL色彩模型,另一個使用HUSL色彩模型,並將其繪製出來。結果如下:

[(0.12156862745098039, 0.4666666666666667, 0.7058823529411765), (1.0, 0.4980392156862745, 0.054901960784313725), (0.17254901960784313, 0.6274509803921569, 0.17254901960784313), (0.8392156862745098, 0.15294117647058825, 0.1568627450980392), (0.5803921568627451, 0.403921568627451, 0.7411764705882353), (0.5490196078431373, 0.33725490196078434, 0.29411764705882354)]

圖表翻譯:

上述程式碼和結果展示瞭如何使用Seaborn函式庫生成質性調色盤,並使用不同的色彩模型(HSL和HUSL)來生成不同的顏色組合。這些調色盤可以用於展示沒有特定順序的類別資料,例如不同類別的產品或服務。透過選擇合適的顏色組合,可以更好地呈現資料的特點和趨勢。

內容解密:

上述程式碼中,使用了Seaborn函式庫的color_palette函式來生成質性調色盤。這個函式可以根據不同的引數生成不同的顏色組合,例如使用HSL或HUSL色彩模型。然後,使用sns.palplot函式來繪製生成的調色盤。結果展示了不同類別的顏色組合,可以用於展示沒有特定順序的類別資料。

顏色調色盤生成與視覺化

在資料視覺化中,選擇合適的顏色調色盤對於有效傳達資訊至關重要。Seaborn是一個根據Matplotlib的Python資料視覺化函式庫,提供了多種方法來生成和自定義顏色調色盤。

HLS調色盤

HLS(Hue, Lightness, Saturation)調色盤是一種根據色相、亮度和飽和度來生成顏色的方法。這種調色盤可以用來建立一系列均勻分佈的顏色。

import seaborn as sns
import matplotlib.pyplot as plt

# 生成HLS調色盤
sns.palplot(sns.hls_palette(h=0.5, l=0.3, s=0.5))

plt.show()

HUSL調色盤

HUSL(Hue, Saturation, Lightness)調色盤是另一種根據色相、飽和度和亮度來生成顏色的方法。這種調色盤也可以用來建立一系列均勻分佈的顏色。

import seaborn as sns
import matplotlib.pyplot as plt

# 生成HUSL調色盤
sns.palplot(sns.husl_palette(s=0.5, l=0.5))

plt.show()

序列調色盤

序列調色盤是一種用於展示資料進展或變化的調色盤。這種調色盤可以用來建立一系列從淺到深的顏色過渡。

import seaborn as sns
import matplotlib.pyplot as plt

# 生成序列調色盤
sns.palplot(sns.color_palette("Blues"))

plt.show()

分歧調色盤

分歧調色盤是一種用於強調高低極端值的調色盤。這種調色盤可以用來建立一系列從冷到熱的顏色過渡。

import seaborn as sns
import matplotlib.pyplot as plt

# 生成分歧調色盤
sns.palplot(sns.diverging_palette(250, 130, l=60, n=11))

plt.show()

自定義分歧調色盤

Seaborn還提供了一種方法來自定義分歧調色盤。這種方法可以用來建立一系列根據特定需求的顏色過渡。

import seaborn as sns
import matplotlib.pyplot as plt

# 自定義分歧調色盤
sns.palplot(sns.diverging_palette(h_neg=250, h_pos=130, l=60, n=11))

plt.show()

圖表翻譯:

上述程式碼使用Seaborn函式庫來生成和視覺化不同的顏色調色盤。每個程式碼片段都對應了一個特定的調色盤型別,例如HLS、HUSL、序列和分歧調色盤。透過這些程式碼,可以建立出多種不同的顏色過渡效果,以滿足不同的資料視覺化需求。

使用Seaborn的diverging_palette()和hls_palette()函式進行資料視覺化

在資料視覺化中,選擇合適的色彩調色盤對於有效地傳達資訊至關重要。Seaborn是一個根據Matplotlib的Python資料視覺化函式庫,提供了多種用於建立資訊豐富且視覺上吸引人的圖表的工具。其中,diverging_palette()hls_palette()函式是用於生成色彩調色盤的兩個重要函式。

diverging_palette()函式

diverging_palette()函式用於建立分散式色彩調色盤,這種調色盤適合於展示具有對稱或分散性質的資料。以下是使用diverging_palette()函式的示例:

import seaborn as sns
import matplotlib.pyplot as plt

# 建立一個分散式色彩調色盤
palette = sns.diverging_palette(240, 10, l=65, center='dark')

# 顯示色彩調色盤
plt.show()

這個示例建立了一個分散式色彩調色盤,該調色盤從藍色漸變到紅色,中間點為黑色。

hls_palette()函式

hls_palette()函式用於建立HLS(色相、亮度、飽和度)色彩調色盤。HLS色彩模型是一種將色彩表示為三個引數(色相、亮度、飽和度)的模型。以下是使用hls_palette()函式的示例:

import seaborn as sns
import matplotlib.pyplot as plt

# 建立一個HLS色彩調色盤
palette = sns.hls_palette(h=0.5, s=0.6, l=0.4)

# 顯示色彩調色盤
plt.show()

這個示例建立了一個HLS色彩調色盤,該調色盤具有中等亮度和飽和度,色相為0.5。

將色彩調色盤應用於圖表

一旦建立了色彩調色盤,就可以將其應用於圖表中。以下是使用set_palette()函式將色彩調色盤應用於圖表的示例:

import seaborn as sns
import matplotlib.pyplot as plt

# 載入資料集
diamonds = sns.load_dataset('diamonds')

# 建立一個HLS色彩調色盤
palette = sns.hls_palette(h=0.5, s=0.6, l=0.4)

# 將色彩調色盤應用於圖表
sns.set_palette(palette)

# 繪製圖表
sns.barplot(x='cut', y='carat', data=diamonds)

# 顯示圖表
plt.show()

這個示例將HLS色彩調色盤應用於條形圖,該圖表顯示了鑽石的切割型別和重量之間的關係。

從技術架構視角來看,Seaborn 建立於 Matplotlib 之上,提供更簡潔易用的 API,讓資料視覺化更加流暢。其內建資料集和多樣化的圖表型別,從熱圖到箱型圖,都能有效地展現資料的特性與關聯。然而,Seaborn 的彈性略遜於 Matplotlib,對於高度客製化的圖表需求,仍需仰賴 Matplotlib 的底層控制。Seaborn 與 Matplotlib 的整合應用,能兼顧開發效率與圖表彈性,是 Python 資料視覺化的最佳實務。展望未來,Seaborn 將持續強化與其他資料科學工具的整合,並提供更多進階的視覺化功能,例如互動式圖表和 3D 視覺化,以滿足日益增長的資料分析需求。對於 Python 開發者而言,掌握 Seaborn 將是提升資料洞察力的關鍵技能。玄貓認為,Seaborn 在易用性和視覺化效果上取得了良好的平衡,值得資料科學家和分析師廣泛採用。