分類體系詳解:圖級與軸級函數(shù)應(yīng)用指南)
提到seaborn估計(jì)不少初學(xué)數(shù)據(jù)分析的朋友都有這種經(jīng)歷打開官方文檔函數(shù)列表長得像超市貨架什么scatterplot、lineplot、boxplot、violinplot、kdeplot、jointplot……一眼望不到頭每個(gè)好像都得背下來但真正用的時(shí)候又拿不準(zhǔn)該用哪個(gè)。標(biāo)題里寫的“seabon”應(yīng)該是“seaborn”的筆誤不過這個(gè)筆誤不重要重要的是后面那句從函數(shù)分類來看。這個(gè)角度我覺得特別對因?yàn)閟eaborn之所以看起來難學(xué)恰恰是因?yàn)槟惆阉?dāng)成了一堆孤立的函數(shù)一旦你把它的函數(shù)體系按分類梳理清楚整張圖就豁然開朗了。這篇文章我就結(jié)合自己的實(shí)戰(zhàn)經(jīng)驗(yàn)帶大家把seaborn的函數(shù)從頭到尾按類型拆一遍順便說說每個(gè)分類背后的設(shè)計(jì)邏輯、適用場景以及我踩過的那些坑。1. 為什么我建議從函數(shù)分類開始學(xué)seaborn而不是背函數(shù)1.1 我的彎路抄了半個(gè)月代碼才發(fā)現(xiàn)的規(guī)律最早我學(xué)seaborn的時(shí)候完全是被動(dòng)式的用法。今天要畫個(gè)散點(diǎn)圖就搜scatterplot明天要畫箱線圖又搜boxplot。代碼是能跑但每次換一個(gè)數(shù)據(jù)集、換一個(gè)分析方向我就得重新查一遍文檔效率低得可怕。后來有次做綜合練習(xí)需要用同一個(gè)數(shù)據(jù)集同時(shí)畫散點(diǎn)圖、分布圖、分類箱線圖我才發(fā)現(xiàn)這三個(gè)圖之間居然存在一個(gè)上下位的調(diào)用關(guān)系——scatterplot其實(shí)是relplot的一個(gè)子集boxplot其實(shí)是catplot的子集而kdeplot、histplot都被整合在displot里。那一刻我意識到seaborn不是隨機(jī)堆了不少函數(shù)而是有意識地把函數(shù)按“要回答什么問題”分成了幾大類。這件事對我觸動(dòng)很大因?yàn)楹芏嘟坛躺蟻砭徒棠鉷lt.subplots加ax.scatter或者直接擺出十幾個(gè)API卻沒有人點(diǎn)破seaborn內(nèi)部的分類邏輯。結(jié)果就是你背了一堆函數(shù)名但遇到真實(shí)的分析任務(wù)還是不知道從哪個(gè)門進(jìn)去。相反如果你腦子里先有一個(gè)“分類框架”哪怕你忘了某一個(gè)具體函數(shù)的名字也能通過類別反推出來。1.2 函數(shù)分類其實(shí)是一張“可視化決策地圖”我用一個(gè)類比來解釋為什么分類重要seaborn像一座圖書館里面的書是按主題分區(qū)的。你借書的時(shí)候不會滿館亂逛而是先確定你要的是“小說”還是“科普”再進(jìn)入對應(yīng)的書架。seaborn的函數(shù)分類也是這樣——它通盤回答了三個(gè)最底層的問題你要看兩個(gè)變量之間的關(guān)系嗎進(jìn)“關(guān)系圖”分類。你要看一個(gè)或者多個(gè)變量的分布形態(tài)嗎進(jìn)“分布圖”分類。你需要對比不同類別的差異嗎進(jìn)“分類圖”分類。這三類之外還有回歸圖、矩陣圖這樣的“特種書架”。當(dāng)你把seaborn的API理解成這么一張決策地圖選函數(shù)就不再是死記硬背而是順著分析目標(biāo)一步步走下決策分支。這也是我寫這篇文章的初衷幫大家把這張地圖畫出來以后拿到任何數(shù)據(jù)都能照著地圖找到正確的繪圖函數(shù)。2. seaborn的函數(shù)體系到底怎么分層2.1 圖級函數(shù)與軸級函數(shù)理解API設(shè)計(jì)的支點(diǎn)在拆具體分類之前必須先搞清一個(gè)貫穿整個(gè)seaborn的分層概念圖級函數(shù)figure-level和軸級函數(shù)axes-level。這是seaborn一切API設(shè)計(jì)的基礎(chǔ)也是新手最容易混淆的地方。圖級函數(shù)的名字基本都以*plot結(jié)尾比如relplot、displot、catplot、lmplot、pairplot、jointplot。它們的特點(diǎn)是一次調(diào)用就會自動(dòng)創(chuàng)建整個(gè)Figure畫布并且可以分割出多個(gè)子圖。你想按某種變量分列、分行圖級函數(shù)直接用col、row參數(shù)就搞定了。軸級函數(shù)則比如scatterplot、lineplot、histplot、kdeplot、boxplot、violinplot等。它們只負(fù)責(zé)在當(dāng)前已有的坐標(biāo)系A(chǔ)xes上畫一層圖形不創(chuàng)建新畫布也不管子圖切分。你通常會先建好matplotlib的Figure和Axes對象然后把軸級函數(shù)一把a(bǔ)x參數(shù)傳進(jìn)去。用一個(gè)表來對照層級函數(shù)示例畫布管理適合場景圖級函數(shù)relplot/displot/catplot/pairplot自動(dòng)創(chuàng)建整套圖要分面、要比較多個(gè)子圖軸級函數(shù)scatterplot/histplot/boxplot繪制在指定Axes上畫單幅圖或嵌入自定義布局記住這個(gè)分層之后你會發(fā)現(xiàn)很多困惑瞬間解開。例如有人問為什么relplot里能傳col而scatterplot里傳不了因?yàn)閟catterplot是軸級函數(shù)它沒有能力管理整張畫布分面是relplot承擔(dān)的責(zé)任。同理displot和histplot的關(guān)系也不是“兩個(gè)不同的函數(shù)”而是“同一個(gè)繪圖邏輯的兩種膠囊”。2.2 四大分類模塊關(guān)系、分布、分類、回歸與矩陣在“分層”之上seaborn還按統(tǒng)計(jì)圖形類型做了二次分類。我把它體系化為四個(gè)模塊再加上一個(gè)畫布工具模塊關(guān)系圖模塊核心是relplot下面掛scatterplot、lineplot。用于探索數(shù)值型變量之間的相互影響。分布圖模塊核心是displot下面掛histplot、kdeplot、ecdfplot、rugplot。用于看數(shù)據(jù)和分布形態(tài)。分類圖模塊核心是catplot下面掛stripplot、swarmplot、boxplot、violinplot、boxenplot、pointplot、barplot、countplot。用于處理含離散分類變量的場景?;貧w圖與矩陣圖模塊回歸圖包含regplot、lmplot、residplot矩陣圖包含heatmap、jointplot、pairplot、clustermap。這個(gè)分類不是官方文檔里完全照搬的說法官方文檔把關(guān)系、分布、分類拆成三個(gè)大板塊回歸和矩陣各自獨(dú)立但它足夠概括seaborn的核心函數(shù)也方便記憶。模塊之間不是說“不能混用”而是說每個(gè)模塊解決一類典型問題。舉個(gè)例子你可以用scatterplot繪制離散點(diǎn)后再疊加histplot當(dāng)坐標(biāo)軸邊框的分布這是組合用的常見手法并不沖突。3. 關(guān)系圖、分布圖、分類圖三大主力分類的適用場景與案例3.1 關(guān)系圖relplot體系探尋變量間相互影響relplot是關(guān)系圖的總?cè)肟谒膬蓚€(gè)軸級子函數(shù)是scatterplot和lineplot。你可能會問散點(diǎn)圖不就是直接畫坐標(biāo)點(diǎn)嗎為什么還要包一層relplot核心原因在于relplot支持語義映射參數(shù)hue按顏色區(qū)分size按點(diǎn)大小區(qū)分style按形狀區(qū)分col和row按子圖分面。這四個(gè)映射組合起來一張散點(diǎn)圖就能表達(dá)五六個(gè)維度的信息。舉個(gè)我常用到的場景分析某模擬平臺用戶消費(fèi)行為想同時(shí)看“消費(fèi)金額”和“購買次數(shù)”的關(guān)系還想知道“不同會員等級”之間的差異。如果用scatterplot代碼是import seaborn as sns import pandas as pd # 假設(shè)data是長格式DataFrame包含金額、次數(shù)、會員等級、周幾 sns.scatterplot(datadata, x消費(fèi)金額, y購買次數(shù), hue會員等級)這樣能看出顏色差異但如果還要按“周幾”分列觀察變化趨勢就要轉(zhuǎn)用relplotsns.relplot( datadata, x消費(fèi)金額, y購買次數(shù), hue會員等級, col周幾, kindscatter # 默認(rèn)就是scatter也可以填line )kindscatter代表用散點(diǎn)圖來畫關(guān)系換成kindline就變成折線關(guān)系圖。這張圖會自動(dòng)變成一排子畫布非常直觀。實(shí)話說relplot最容易被忽略的是線條場景。很多人以為關(guān)系圖只用來畫散點(diǎn)其實(shí)時(shí)間序列這種“x軸有天然順序”的數(shù)據(jù)用relplot(kindline)加hue和style比手動(dòng)循環(huán)plt.plot快得多。它還能自動(dòng)聚合重復(fù)x值省去提前算均值的步驟。3.2 分布圖displot體系觀察單個(gè)或多個(gè)變量的形態(tài)displot是分布圖的集成入口整合了原來的histplot、kdeplot、ecdfplot以及一個(gè)輔助性的rugplot。分布圖要回答的問題是我的數(shù)據(jù)長什么樣集中在哪個(gè)區(qū)間有沒有明顯的峰值或長尾這個(gè)分類在探索性數(shù)據(jù)分析階段幾乎是必用的。最基礎(chǔ)的用法是看單變量直方圖sns.displot(datadata, x消費(fèi)金額, kindhist)kind參數(shù)支持切換成kde核密度曲線和ecdf經(jīng)驗(yàn)累積分布函數(shù)。我自己的習(xí)慣是先用hist看直方圖發(fā)現(xiàn)分布有雙峰或偏斜后再疊加kde看平滑曲線sns.displot(datadata, x消費(fèi)金額, kindkde, hue會員等級)displot同樣支持hue、col、row所以想看不同組別的分布對比非常容易。還有一個(gè)值得一提的點(diǎn)可以傳兩個(gè)變量進(jìn)去畫二維直方圖或二維核密度圖這時(shí)displot變成了“分布熱力圖”sns.displot(datadata, x消費(fèi)金額, y購買次數(shù), kindkde, thresh0.05)這種圖在分析兩個(gè)連續(xù)變量的聚集區(qū)域時(shí)特別好用尤其是當(dāng)你發(fā)現(xiàn)散點(diǎn)圖重疊太嚴(yán)重、看不清密度的時(shí)候。3.3 分類圖catplot體系對付非數(shù)值型維度說到分類圖這是seaborn里函數(shù)最多的一個(gè)模塊也是很多初學(xué)者最頭疼的地方boxplot、violinplot、stripplot、swarmplot、barplot、pointplot、countplot……名字都像到底什么時(shí)候用哪個(gè)其實(shí)理解了catplot的分類邏輯就不亂了。catplot的入口統(tǒng)一用kind參數(shù)切換具體的軸級圖。按照“展示原始數(shù)據(jù)點(diǎn)”和“展示統(tǒng)計(jì)匯總”兩條線索可以分成展示分布形態(tài)box箱線圖、boxen增強(qiáng)箱線圖、violin小提琴圖。展示原始數(shù)據(jù)點(diǎn)strip散點(diǎn)分布、swarm蜜蜂群圖。展示統(tǒng)計(jì)匯總bar柱狀圖、point點(diǎn)圖、count頻數(shù)圖。我處理真實(shí)數(shù)據(jù)時(shí)的選擇標(biāo)準(zhǔn)很簡單如果樣本量不大幾千條以內(nèi)我會先用swarm畫蜂群圖既能看見每個(gè)樣本的位置又不重疊樣本量大了swarm會畫出很長的尾巴性能也下降就換box或violin。例如sns.catplot(datadata, x會員等級, y消費(fèi)金額, kindviolin)這里x是分類變量y是連續(xù)變量kindviolin同時(shí)展示分布和分位數(shù)。如果還想看到底有沒有異常值可以疊加stripsns.catplot(datadata, x會員等級, y消費(fèi)金額, kindviolin, innerNone) sns.catplot(datadata, x會員等級, y消費(fèi)金額, kindstrip, alpha.5)注意單獨(dú)調(diào)用兩次catplot會生成兩張圖如果想疊加到同一張圖上就要用軸級函數(shù)在小提琴圖上繼續(xù)畫散點(diǎn)。這種“先用圖級函數(shù)把布局搭好再用軸級函數(shù)往里面加細(xì)節(jié)”的組合是后面講到的進(jìn)階技巧。countplot這個(gè)函數(shù)也很容易被忽略其實(shí)它等價(jià)于catplot(kindcount)專門用來畫離散變量的頻數(shù)分布。比如看會員等級的分布一個(gè)countplot就夠了不需要自己value_counts再畫柱狀圖sns.catplot(datadata, x會員等級, kindcount)4. 回歸圖與矩陣圖函數(shù)分類里容易被忽略的王牌4.1 回歸圖從散點(diǎn)里找出趨勢線回歸圖這個(gè)分類經(jīng)常被劃到關(guān)系圖里但seaborn把它單獨(dú)拿出來說明它有自己的位置。核心函數(shù)是regplot和lmplot。regplot是軸級函數(shù)lmplot則是它的圖級版額外支持hue、col、row。很多人以為回歸圖就是“畫完散點(diǎn)再畫一條擬合線”其實(shí)沒那么簡單。regplot能自動(dòng)計(jì)算置信區(qū)間畫出來的陰影帶代表擬合線的不確定性。我通常用它來做兩個(gè)連續(xù)變量的初步探索看看有沒有線性趨勢順帶檢測異常點(diǎn)。sns.regplot(datadata, x消費(fèi)金額, y購買次數(shù))如果有多組對比那就用lmplotsns.lmplot(datadata, x消費(fèi)金額, y購買次數(shù), hue會員等級)這里有個(gè)技術(shù)細(xì)節(jié)regplot和lmplot都支持order參數(shù)設(shè)置多項(xiàng)式回歸的階數(shù)。數(shù)據(jù)明顯是曲線關(guān)系時(shí)設(shè)置order2就能擬合二次曲線。還有x_bins和x_ci這種參數(shù)可以把x分成幾段再計(jì)算均值置信區(qū)間畫出來是類似折線的效果在探索非線性關(guān)系時(shí)很好用。回歸圖實(shí)際分析中還有一個(gè)常被忽略的點(diǎn)用residplot看殘差。你擬合完線性回歸后如果殘差圖呈現(xiàn)出有規(guī)律的結(jié)構(gòu)說明模型假設(shè)不成立比如漏掉了強(qiáng)非線性項(xiàng)。seaborn提供了專門的residplot直接畫殘差分布不需要自己調(diào)用sklearn算完再畫。4.2 矩陣圖一圖看完所有兩兩關(guān)系矩陣圖分類中pairplot和heatmap是數(shù)據(jù)分析里出場率極高的兩個(gè)函數(shù)。pairplot能把數(shù)據(jù)集中所有數(shù)值型列兩兩組合的散點(diǎn)圖畫成一個(gè)矩陣對角線畫單變量分布。我第一次用的時(shí)候非常震撼一行代碼十幾張子圖自動(dòng)生成。比如sns.pairplot(data[[消費(fèi)金額, 購買次數(shù), 會員等級]], hue會員等級)這個(gè)函數(shù)在處理小規(guī)模數(shù)據(jù)集時(shí)幾乎是神兵利器它能快速暴露變量之間的線性相關(guān)性、簇狀結(jié)構(gòu)、分布形態(tài)。但要注意變量一多就爆炸。如果有十幾個(gè)數(shù)值列pairplot會生成上百張子圖圖變小不說渲染還慢這時(shí)我更建議先用相關(guān)性矩陣heatmap做初篩sns.heatmap(data.corr(numeric_onlyTrue), annotTrue, cmapcoolwarm)heatmap不直接屬于關(guān)系/分布/分類這三類但它是真正的“數(shù)據(jù)可視化之王”尤其是看相關(guān)矩陣。annotTrue把相關(guān)系數(shù)數(shù)字直接標(biāo)在格子里cmap選一個(gè)發(fā)散型色帶比如冷色到暖色一眼就能看出哪些變量正相關(guān)、哪些負(fù)相關(guān)哪些完全沒有關(guān)系。jointplot有一點(diǎn)特殊它既可以畫雙變量分布也可以疊加回歸或者散點(diǎn)。實(shí)際上jointplot是圖級函數(shù)它會自動(dòng)生成一個(gè)“主圖兩個(gè)坐標(biāo)軸邊緣分布圖”的組合。比如你想深度探究消費(fèi)金額和購買次數(shù)的聯(lián)合分布可以這樣sns.jointplot(datadata, x消費(fèi)金額, y購買次數(shù), kindhex)kindhex用六邊形分箱展示密度比普通散點(diǎn)更耐看。jointplot本質(zhì)上是一個(gè)獨(dú)立的圖級封裝雖然在分類上我把它放在矩陣圖里但它和pairplot的關(guān)系并不是子集關(guān)系而是一個(gè)關(guān)注“兩變量聯(lián)合”、一個(gè)關(guān)注“多變量兩兩組合”。5. 從函數(shù)分類角度避坑版本更替與數(shù)據(jù)格式5.1 老版本的distplot與kdeplot被整合別再用舊函數(shù)seaborn版本迭代帶來的一個(gè)典型坑是老版本里的distplot函數(shù)在新的主流版本中已經(jīng)廢棄官方建議改用displot或histplot。如果你在搜索引擎上看到舊教程里面寫著sns.distplot(x)在較新版本中的seaborn里運(yùn)行會直接報(bào)錯(cuò)。我之前有一次幫同學(xué)排查代碼看到報(bào)錯(cuò)信息里出現(xiàn)“distplotis a deprecated function and will be removed”對方還很疑惑說照教程寫的怎么會錯(cuò)其實(shí)就是版本問題。正確的做法是把舊的畫單變量分布需求轉(zhuǎn)換到displot# 舊寫法已廢棄 # sns.distplot(data[消費(fèi)金額]) # 新寫法 sns.displot(data[消費(fèi)金額])如果是想在已有Axes上畫一條分布曲線就用histplot或kdeplot它們才是軸級函數(shù)。這個(gè)版本更替其實(shí)也印證了我前面講的分類邏輯displot是圖級入口histplot和kdeplot是它內(nèi)部的軸級實(shí)現(xiàn)。你只要腦子里有“圖級/軸級”這把尺子看到distplot被廢棄也不會慌去找替代的函數(shù)名即可。5.2 長格式數(shù)據(jù)與寬格式數(shù)據(jù)請務(wù)必分清第二個(gè)常踩的坑是數(shù)據(jù)格式。seaborn的設(shè)計(jì)強(qiáng)烈偏向于使用長格式tidy data每一行是一個(gè)觀測每一列是一個(gè)變量這樣x、y、hue才能自由映射。但很多人用慣了pandas拿到的原始數(shù)據(jù)是寬格式比如每列是一個(gè)時(shí)間點(diǎn)行是不同的用戶。直接把寬格式喂給seaborn經(jīng)常畫不出來或者畫出的圖完全不對。我處理寬格式數(shù)據(jù)的習(xí)慣是先用pd.melt()把它轉(zhuǎn)成長格式。舉個(gè)典型例子原來數(shù)據(jù)長這樣用戶ID一月二月三月A100150200B90110130要畫每個(gè)用戶在每個(gè)月的消費(fèi)變化不能直接把整張表傳給relplot需要先轉(zhuǎn)換df_long df.melt(id_vars用戶ID, var_name月份, value_name消費(fèi)金額) sns.relplot(datadf_long, x月份, y消費(fèi)金額, hue用戶ID, kindline)轉(zhuǎn)換完之后x、y、hue才各有所指。記住seaborn的所有分類函數(shù)前提都是數(shù)據(jù)處于長格式。只有heatmap可以直接吃寬格式的矩陣因?yàn)樗举|(zhì)上是把DataFrame的值按行列坐標(biāo)染色。5.3 圖級函數(shù)與軸級函數(shù)混用時(shí)的畫布控制第三個(gè)坑是關(guān)于畫布控制的。很多人用plt.subplots()建好畫布之后又喊sns.displot(...)結(jié)果發(fā)現(xiàn)displot自己又開了一張圖并不畫在剛才的子圖上。這是因?yàn)閳D級函數(shù)自帶畫布管理你外面建好的Axes根本傳不進(jìn)去。解決辦法有兩種第一種如果就是要用圖級函數(shù)那就別手動(dòng)創(chuàng)建畫布直接在調(diào)用relplot、displot、catplot時(shí)通過參數(shù)控制行列數(shù)目。第二種如果想和其他圖組合比如把散點(diǎn)圖和箱線圖放在同一個(gè)坐標(biāo)系里就要切換到軸級函數(shù)去畫。軸級函數(shù)有一個(gè)統(tǒng)一的ax參數(shù)可以接收Matplotlib的Axes對象。import matplotlib.pyplot as plt fig, axes plt.subplots(1, 2, figsize(12, 4)) sns.scatterplot(datadata, x消費(fèi)金額, y購買次數(shù), hue會員等級, axaxes[0]) sns.boxplot(datadata, x會員等級, y消費(fèi)金額, axaxes[1]) plt.tight_layout()這個(gè)操作看起來簡單但很多人會在這里卡住半天。本質(zhì)原因就是沒分清圖級和軸級。scatterplot和boxplot都是軸級函數(shù)它們的責(zé)任是“在給定的坐標(biāo)系上畫內(nèi)容”所以能把它們畫進(jìn)指定位置而scatterplot的圖級大哥relplot沒有ax參數(shù)它天然要自己管整張畫布。6. 我自己的選型習(xí)慣用函數(shù)分類快速選圖的方法6.1 一個(gè)簡潔的決策流程函數(shù)分類不應(yīng)該停留在概念上最好變成肌肉記憶。我給自己總結(jié)了一個(gè)用函數(shù)分類決定畫圖方法的決策流程每次拿到數(shù)據(jù)都會按這個(gè)思路走一遍第一步先判斷分析目標(biāo)。如果要看關(guān)系選關(guān)系圖分類要看分布選分布圖分類要對比類別選分類圖分類要做回歸診斷選回歸圖分類要一覽全局選矩陣圖分類。第二步在分類內(nèi)部再判斷要不要分面。需要分面就選圖級函數(shù)relplot/displot/catplot不需要就可以直接用軸級函數(shù)。第三步根據(jù)數(shù)據(jù)樣本量選擇具體子圖。比如分類圖分類里數(shù)據(jù)量大選box或violin數(shù)據(jù)量小選swarm能展示更多細(xì)節(jié)。這個(gè)流程不復(fù)雜但極大減少了我“選擇困難”的時(shí)間。遇到陌生數(shù)據(jù)集時(shí)我會先跑一個(gè)pairplot加一個(gè)heatmap做探索快速了解整體情況然后針對最關(guān)心的關(guān)系進(jìn)入對應(yīng)的分類用圖級函數(shù)畫帶分面的大圖最后如果有必要再回到軸級函數(shù)做微調(diào)。這套思路從函數(shù)分類來但已經(jīng)超出了“函數(shù)名記憶”的范圍變成一種分析框架。6.2 給初學(xué)者的練習(xí)順序如果你剛開始用seaborn我不建議按函數(shù)字母表去背。更有效的做法是按分類做“最小案例練習(xí)”先試relplot(kindscatter)和relplot(kindline)理解關(guān)系圖分類。再試displot(kindhist)、displot(kindkde)理解分布圖分類。然后試catplot(kindbox)、catplot(kindviolin)、catplot(kindbar)理解分類圖分類。最后用regplot和lmplot體會回歸圖用pairplot和heatmap體會矩陣圖。每組案例都刻意加hue和col參數(shù)看看圖級函數(shù)的分面能力。這樣學(xué)下來你的掌握速度會比一個(gè)個(gè)函數(shù)零敲碎打快很多。因?yàn)槟銜l(fā)現(xiàn)同一個(gè)分類里的函數(shù)它們共享大量參數(shù)設(shè)計(jì)例如hue、col、row、palette在圖級函數(shù)中幾乎都是通用的軸級函數(shù)則普遍帶有ax參數(shù)。一把尺子量到底這大概就是函數(shù)分類帶來的最大紅利。最后再分享一個(gè)我自己的小習(xí)慣電腦上常年開著seaborn的官方分類頁面但一直不是用來查具體函數(shù)參數(shù)的而是用來確認(rèn)某個(gè)圖屬于哪個(gè)分類。分類比函數(shù)名更穩(wěn)定即便版本升級改了函數(shù)名分類層面的圖型邏輯一般不會大變。當(dāng)你發(fā)現(xiàn)自己不靠搜索也能憑分類推理出“這個(gè)場景應(yīng)該能用displot去畫”的時(shí)候seaborn在你的工具庫里才算真正順手了。