Seaborn學(xué)習(xí)指南
安裝與配置
Seaborn構(gòu)建在Matplotlib之上,因此可以結(jié)合Matplotlib進(jìn)行深度自定義。例如,使用plt.subplots創(chuàng)建圖形后,在子圖上繪制Seaborn圖形,然后使用Matplotlib的函數(shù)調(diào)整細(xì)節(jié)。
Seabron的核心價(jià)值在于自動(dòng)計(jì)算統(tǒng)計(jì)指標(biāo),比如置信區(qū)間
置信區(qū)間是指由樣本統(tǒng)計(jì)量所構(gòu)造的總體參數(shù)的估計(jì)區(qū)間
import numpy as np
import pandas as pd
import seaborn as sns
# 可在繪圖函數(shù)中自動(dòng)計(jì)算平均值+置信區(qū)間
sns.barplot(data=tips, x="day", y="total_bill", ci=95)
#手動(dòng)計(jì)算如下
avg = tips.groupby('day')['total_bill'].mean()
std = tips.groupby('day')['total_bill'].std()
n = tips.groupby('day').size()
ci = 1.96 * std / np.sqrt(n) # 95%置信區(qū)間
- 安裝用pip
核心功能
內(nèi)置數(shù)據(jù)集
-
sns.get_dataset_names():查看所有內(nèi)置數(shù)據(jù)集
![image]()
-
sns.load_dataset('tips'):下載數(shù)據(jù)集
數(shù)據(jù)集特性:- 精心設(shè)計(jì)的統(tǒng)計(jì)數(shù)據(jù)集
- 自動(dòng)處理缺失值
- 包含分類變量和連續(xù)變量

如果無法下載可以試試關(guān)閉電腦防火墻
樣式設(shè)置
sns.set_style():設(shè)置主題
Seaborn 通過預(yù)設(shè)主題解決 Matplotlib 的默認(rèn)樣式問題
darkgrid(默認(rèn)):灰色背景,白色網(wǎng)格whitegrid:白色背景,網(wǎng)格線dark:深灰色背景,無網(wǎng)格white:白色背景,無網(wǎng)格ticks:白色背景,四周有刻度線
### 五大主題風(fēng)格對(duì)比
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
styles = ["darkgrid", "whitegrid", "dark", "white", "ticks"]
for i, style in enumerate(styles, 1):
plt.subplot(2, 3, i)
sns.set_style(style)
sns.barplot(x=["A", "B"], y=[3, 7])
plt.title(style)
plt.tight_layout()
plt.show()

sns.set_context():設(shè)置上下文
- context:控制圖形的比例,適合不同的使用場(chǎng)景(如論文、演講等)
paper:最小,適合論文插圖notebook:默認(rèn)適合Jupyter Notebooktalk:較大適合,適合演講poster:海報(bào)/展板
- font_scale:字體縮放比例 (=1.2放大20%)
- rc=None:額外覆蓋的rc參數(shù)
![image]()
sns.set_palette():設(shè)置調(diào)色板
- 預(yù)設(shè)調(diào)色板:
deep,muted,pastel,dark,colorblind等 - 連續(xù)調(diào)色板:
rocket,mako,viridis,magma等 - 離散調(diào)色板:
Set1,Set2,Paired,tab10等 - 發(fā)散調(diào)色板:
vlag,icefire,coolwarm等
常見圖表
關(guān)系圖:用于展示兩個(gè)變量之間的關(guān)系
sns.scatterplot():散點(diǎn)圖
創(chuàng)建高度可定制的散點(diǎn)圖,用于展示兩個(gè)數(shù)值變量之間的關(guān)系,支持多個(gè)分組維度
- 自動(dòng)處理顏色,大小和樣式映射
- 支持?jǐn)?shù)值和分類變量的分組
- 內(nèi)置顏色調(diào)色板和樣式控制
- 邊緣線處理增強(qiáng)可讀性
詳細(xì)參數(shù)如下:

-
基本散點(diǎn)圖
![image]()
-
多維度分組散點(diǎn)圖
![image]()
-
帶回歸線散點(diǎn)圖
![image]()
sns.lineplot():折線圖(可帶置信區(qū)間)
展示數(shù)據(jù)隨時(shí)間或有序變量的變化趨勢(shì),支持多線比較和置信區(qū)間
- 自動(dòng)聚合重復(fù)x值和y值
- 計(jì)算并繪制置信區(qū)間
- 支持多線分組
- 處理缺失值只能插值
詳細(xì)參數(shù)如下:

-
基本折線圖
![image]()
-
多分組折線圖
![image]()
分布圖:用于展示單變量雙變量分布情況
sns.histplot():直方分布圖
展示數(shù)值變量的分布情況,可結(jié)合核密度估計(jì)(KDE)和地毯圖
- 靈活的箱數(shù)(bins)設(shè)置;
- 支持單變量和多變量分布;
- 可疊加KDE和地毯圖
詳細(xì)參數(shù)如下:

-
基本直方圖
![image]()
-
分組直方圖
![image]()
-
雙變量直方圖
![image]()
sns.kdeplot():核密度估計(jì)圖
創(chuàng)建核密度估計(jì)圖,用于可視化單變量或雙變量的概率密度分布
- 單變量或雙變量密度估計(jì)
- 支持填充和輪廓圖
- 多種帶寬計(jì)算方法
- 分層可視化
詳細(xì)參數(shù)如下:

-
單變量KDE
![image]()
-
雙變量KDE
![image]()
-
分組KDE比較
![image]()
-
輪廓線KDE
![image]()
sns.ecdfplot():經(jīng)驗(yàn)累積分布函數(shù)圖
可視化數(shù)據(jù)的經(jīng)驗(yàn)累計(jì)分布函數(shù)(ECDE),直接顯示數(shù)據(jù)分布而不依賴分箱
- 無參數(shù)估計(jì),直接展示數(shù)據(jù)
- 直觀比較分布
- 顯示數(shù)據(jù)百分位點(diǎn)
- 支持多分組
詳細(xì)參數(shù)如下

-
基本ECDF圖
![image]()
-
分組比較ECDF
![image]()
sns.rugplot():地毯圖
在坐標(biāo)軸上顯示數(shù)據(jù)點(diǎn)的位置,通常作為其他圖的補(bǔ)充
- 簡(jiǎn)潔顯示數(shù)據(jù)分布
- 高效展示大量數(shù)據(jù)點(diǎn)
- 完美配合KDE和直方圖
詳細(xì)參數(shù)如下:

-
雙變量地毯圖
![image]()
-
分組地毯圖
![image]()
-
配合直方圖和KDE
![image]()
分類圖
sns.barplot():條形統(tǒng)計(jì)圖
用于展示分類變量的集中趨勢(shì)(通常是平均值)及置信區(qū)間,自動(dòng)計(jì)算統(tǒng)計(jì)量并可視化
- 自動(dòng)計(jì)算并顯示平均值核置信區(qū)間;
- 支持分組和嵌套條形圖;
- 可處理分類變量和數(shù)值變量
詳細(xì)參數(shù)如下:

-
基礎(chǔ)條形統(tǒng)計(jì)圖
![image]()
-
分組條形圖
![image]()
sns.boxplot():箱線圖
展示數(shù)據(jù)分布的無數(shù)概括(最小值,Q1,中位數(shù),Q3,最大值)以及離群值
- 直觀顯示數(shù)據(jù)分布和離群值
- 支持多組比較
- 可水平或垂直顯示
- 自動(dòng)處理分類變量
詳細(xì)參數(shù)如下:

-
基礎(chǔ)箱線圖
![image]()
-
分組箱線圖
![image]()
sns.countplot():計(jì)數(shù)條形圖(每個(gè)類別的樣本數(shù))
顯示分類變量的觀測(cè)數(shù)量,自動(dòng)計(jì)算并繪制每個(gè)類別的計(jì)數(shù)
- 自動(dòng)分類計(jì)數(shù)
- 支持水平/垂直顯示
- 分組嵌套條形圖
- 顏色編碼分類
詳細(xì)參數(shù)如下:

-
基本計(jì)數(shù)圖
![image]()
-
分組計(jì)數(shù)圖
![image]()
-
水平計(jì)數(shù)圖
![image]()
sns.violinplot():小提琴圖
結(jié)合箱線圖和核密度估計(jì),展示數(shù)據(jù)分布形狀和密度
- 顯示數(shù)據(jù)分布形狀
- 包含箱線圖元素
- 支持分組和嵌套
- 可拆分比較
詳細(xì)參數(shù)如下:

-
基礎(chǔ)小提琴圖
![image]()
-
高級(jí)分組小提琴圖
![image]()
sns.swarmplot():蜂群圖
顯示所有數(shù)據(jù)點(diǎn)的分布,點(diǎn)會(huì)調(diào)整位置避免重疊,類似散點(diǎn)圖但專門為分類變量設(shè)計(jì)
- 顯示所有數(shù)據(jù)點(diǎn)
- 自動(dòng)避免點(diǎn)重疊
- 保留原始數(shù)據(jù)分布
- 適合中小規(guī)模數(shù)據(jù)集
詳細(xì)參數(shù)如下:

-
基礎(chǔ)蜂群圖
![image]()
-
與箱線圖組合
![image]()
回歸圖
sns.regplot():回歸模型模擬合圖
它不僅能可視化兩個(gè)變量之間的關(guān)系,還能展示線性回歸模擬的擬合結(jié)果
- 繪制散點(diǎn)圖展示原始數(shù)據(jù)點(diǎn)
- 計(jì)算并繪制線性回歸擬合線
- 可顯示回歸線的置信區(qū)間
- 支持多種回歸模型(線性,多項(xiàng)式,邏輯回歸等)
- 提供殘差圖等診斷信息
詳細(xì)參數(shù)如下:
sns.regplot(
data=None, # 數(shù)據(jù)框
x=None, y=None, # 坐標(biāo)軸變量
x_estimator=None, # 對(duì)x分組計(jì)算y的估計(jì)值
x_bins=None, # 分組箱數(shù)
x_ci="ci", # x分組的置信區(qū)間
scatter=True, # 是否顯示散點(diǎn)
fit_reg=True, # 是否擬合回歸線
ci=95, # 置信區(qū)間大小 (0-100)
n_boot=1000, # 自助法迭代次數(shù)
units=None, # 抽樣單位
seed=None, # 隨機(jī)種子
order=1, # 多項(xiàng)式階數(shù)
logistic=False, # 是否使用邏輯回歸
lowess=False, # 是否使用LOWESS平滑
robust=False, # 是否使用魯棒回歸
logx=False, # 是否對(duì)x取對(duì)數(shù)
x_partial=None, # 控制變量x
y_partial=None, # 控制變量y
truncate=True, # 是否截?cái)嗷貧w線到數(shù)據(jù)范圍
dropna=True, # 是否刪除缺失值
x_jitter=None, # x軸抖動(dòng)
y_jitter=None, # y軸抖動(dòng)
label=None, # 圖例標(biāo)簽
color=None, # 統(tǒng)一顏色
marker="o", # 點(diǎn)標(biāo)記樣式
scatter_kws=None, # 散點(diǎn)圖參數(shù)
line_kws=None, # 回歸線參數(shù)
ax=None, # 繪圖軸對(duì)象
**kwargs # 其他參數(shù)
)
核心參數(shù)詳解



-
基礎(chǔ)線性回歸
![image]()
-
多項(xiàng)式回歸
![image]()
-
邏輯回歸
![image]()
sns.lmplot():
在分面網(wǎng)格上繪制回歸模型和散點(diǎn)圖,是 regplot 的高級(jí)分面版本
- 支持分面網(wǎng)絡(luò)
- 靈活回歸模型
- 自動(dòng)分組顏色
- 高度可定制
詳細(xì)參數(shù)如下:
sns.lmplot(
data=None, # 數(shù)據(jù)框
x=None, y=None, # 坐標(biāo)軸變量
hue=None, # 顏色分組
col=None, # 列分面變量
row=None, # 行分面變量
palette=None, # 調(diào)色板
col_wrap=None, # 每行最大列數(shù)
height=5, # 每個(gè)分面高度
aspect=1, # 寬高比
markers="o", # 點(diǎn)標(biāo)記
sharex=True, # 共享x軸
sharey=True, # 共享y軸
hue_order=None, # 分組順序
col_order=None, # 列分面順序
row_order=None, # 行分面順序
legend=True, # 是否顯示圖例
legend_out=True, # 圖例是否在外
x_estimator=None, # x分組聚合函數(shù)
x_bins=None, # x分組箱數(shù)
scatter=True, # 是否顯示散點(diǎn)
fit_reg=True, # 是否擬合回歸
ci=95, # 置信區(qū)間
n_boot=1000, # 自助法樣本數(shù)
order=1, # 多項(xiàng)式階數(shù)
logistic=False, # 是否邏輯回歸
lowess=False, # 是否LOWESS
robust=False, # 是否魯棒回歸
logx=False, # 是否對(duì)數(shù)x軸
x_partial=None, # x控制變量
y_partial=None, # y控制變量
truncate=True, # 截?cái)嗷貧w線
x_jitter=None, # x抖動(dòng)
y_jitter=None, # y抖動(dòng)
scatter_kws=None, # 散點(diǎn)參數(shù)
line_kws=None, # 回歸線參數(shù)
facet_kws=None, # 分面參數(shù)
**kwargs # 其他參數(shù)
)
-
基本分面回歸
![image]()
-
多項(xiàng)式分面回歸
![image]()
矩陣圖
sns.heatmap():
使用顏色編碼的矩陣可視化二維數(shù)據(jù)
- 直觀顯示數(shù)值大小
- 支持行列聚類
- 可添加數(shù)值標(biāo)注
- 強(qiáng)大的顏色映射控制
詳細(xì)參數(shù)如下:

-
基礎(chǔ)熱力圖
![image]()
-
高級(jí)熱力圖
![image]()
sns.clustermap():聚類熱力圖(需要Scipy庫(kù))
在熱力圖基礎(chǔ)上添加層次聚類樹狀圖,可對(duì)行和列進(jìn)行聚類
- 自動(dòng)行列聚類
- 可定制聚類方法
- 可添加顏色條和標(biāo)簽
參數(shù)詳解:

其他功能配置
高級(jí)顏色管理系統(tǒng)
sns.palplot()函數(shù)主要用于可視化調(diào)色板
-
sns.palplot(sns.color_palette('husl',8)):分類調(diào)色板
![image]()
-
sns.palplot(sns.color_palette("rocket", as_cmap=False)):連續(xù)調(diào)色板
![image]()
-
sns.palplot(sns.diverging_palette(220, 20, n=9)):發(fā)散調(diào)色板
![image]()
-
自定義調(diào)色板
![image]()
多圖繪圖技術(shù)
多圖網(wǎng)格
FacetGrid 是 Seaborn 中最強(qiáng)大的多圖系統(tǒng),允許基于分類變量創(chuàng)建網(wǎng)格化的圖表矩陣。其核心思想是"分面" - 根據(jù)一個(gè)或多個(gè)分類變量將數(shù)據(jù)分割,并在每個(gè)子圖中展示數(shù)據(jù)子集
sns.FacetGrid:創(chuàng)建基礎(chǔ)FacetGrid

配對(duì)圖
Pairplot創(chuàng)建數(shù)據(jù)集中數(shù)值變量?jī)蓛申P(guān)系的網(wǎng)格圖,對(duì)角線顯示單變量分布,非對(duì)角線顯示雙變量關(guān)系
sns.pairplot:基礎(chǔ)配對(duì)圖

聯(lián)合分布圖
Jointplot 在一個(gè)圖表中同時(shí)展示兩個(gè)變量的雙變量關(guān)系及其各自的單變量分布
sns.jointplot:基礎(chǔ)聯(lián)合分布圖

多圖技術(shù)比較











































浙公網(wǎng)安備 33010602011771號(hào)