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())
輸出結果將顯示所有可用的內建資料集,包括 anagrams
、anscombe
、attention
等。
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主題:darkgrid
、whitegrid
、dark
、white
和ticks
。可以使用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 在易用性和視覺化效果上取得了良好的平衡,值得資料科學家和分析師廣泛採用。