做快消品看那些網(wǎng)站好外貿(mào)網(wǎng)站平臺都有哪些
文章目錄
- 一、前言
- 二、主要內(nèi)容
- 三、總結(jié)
🍉 CSDN 葉庭云:https://yetingyun.blog.csdn.net/
一、前言
JoyPy
是一個基于 matplotlib + pandas 的單功能 Python 包,它的唯一目的是繪制山脊線圖 Joyplots(也稱為 Ridgeline Plots)。
Joyplots 是堆疊的、部分重疊的密度圖,就是這么簡單。它們是一種很好的繪制數(shù)據(jù)的方式,可以用來直觀比較分布,特別是哪些隨著一個維度(比如時間)變化的分布。雖然這并不是一種新技術(shù)。
Github 地址:https://github.com/leotac/joypy
安裝 joypy,使用 pip install joypy==0.2.6
就好。
在行為差異、特征工程和預測建模等場景中,了解不同組之間的變量分布差異非常有用。在這些情況下,許多數(shù)據(jù)科學家更喜歡在單一坐標軸上繪制組級分布圖,例如直方圖或密度圖。然而,當群體較多時,簡單的組級分布圖可能變得混亂且難以理解。
本文將向您介紹一種緊湊而優(yōu)雅的數(shù)據(jù)可視化工具:山脊線圖。它以清晰的方式展示不同變量或變量類別的分布差異,幫助我們更好地理解數(shù)據(jù)中的群體特征,從而獲得更深入的洞察和啟發(fā)。
二、主要內(nèi)容
使用鳶尾花數(shù)據(jù)集 iris.csv
做實驗,這個數(shù)據(jù)集如下所示:
打印特征名稱和標簽,以及輸出標簽的 value_counts。
print(f"特征:{list(df.columns)[:-1]}")
print(f"標簽:{list(df.columns)[-1]}")特征:['SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth']
標簽:Namedf["Name"].value_counts()Iris-setosa 50
Iris-versicolor 50
Iris-virginica 50
Name: Name, dtype: int64
selected_cols = ['SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth']fig, ax = plt.subplots(figsize=(10, 6), dpi=200)
my_title = 'Distribution of features in the iris dataset'fig, axes = joyplot(data=df,ax=ax,by='Name',column=selected_cols,xlabelsize=14,ylabelsize=14,grid=True,hist=False,color=['#FF0066', '#9400D3','#002FA7', '#FFB900'],legend=True,title=my_title,alpha=0.86,
)fig.savefig("./Figures/山脊圖.png", dpi=300)plt.show()
關(guān)鍵參數(shù)說明:
data
:數(shù)據(jù)幀(DataFrame)、系列(Series)或嵌套集合(Nested collection)。常用 pandas 的 DataFrame。ax
: matplotlib axes 對象,默認為 None。column
:字符串或序列。如果傳入?yún)?shù),將用于將數(shù)據(jù)限制為列的子集。by
:對象,可選項。用于劃分不同組的變量分布的特征名稱。本次實驗中是 “Name”。grid
:布爾值,默認是True
。是否顯示軸網(wǎng)格線。title
:繪制的圖表的標題。alpha
:設(shè)置透明度。- xlabels、ylabels:布爾值或列表,默認為 True。
xlabelsize
:整數(shù),默認值 None。如果指定,則更改 X 軸標簽尺寸。xrot
:浮點數(shù),默認為 None。旋轉(zhuǎn) X 軸標簽的角度。ylabelsize
:整數(shù),默認值 None。如果指定,則更改 Y 軸標簽尺寸。yrot
:浮點數(shù),默認為 None。旋轉(zhuǎn) Y 軸標簽的角度。figsize
: 元組。默認情況下,要創(chuàng)建的圖形大小(以 inches 為單位)。color
:在繪圖中使用的一種或多種顏色??梢允亲址蛉魏慰杀?matplotib 解釋為顏色的東西。通常傳入顏色列表。kwds
: 其他繪圖關(guān)鍵字參數(shù),將傳遞給 hist / {/} /kde plot 函數(shù)。
實際上,這主要涉及一些 matplotlib 繪圖參數(shù)。用戶還可以直接修改源代碼,以調(diào)整 X 軸、Y 軸、標題和圖例的字體大小,從而使生成的山脊線圖更加美觀。
山脊線圖可視化的效果如下圖所示:
正如上圖所示,山脊線圖不僅展示了每個鳶尾花種類四個特征的分布形狀和峰值,還直觀地展示了不同種類之間的差異。通過將多個組的分布放置在同一張山脊線圖上,并使用不同的顏色或線型進行標識,我們可以輕松比較它們之間的相似性和差異性。
三、總結(jié)
山脊線圖(Ridgeline Plots),也被稱為 Joy Plots,是一種用于展示一個或多個組的數(shù)據(jù)分布的數(shù)據(jù)可視化方法。
什么是山脊線圖?
- 山脊線圖中,每個組的數(shù)據(jù)分布通過平滑的密度曲線表示,這些曲線沿垂直軸堆疊排列,從而產(chǎn)生類似山脊的視覺效果。
- 這種圖表特別適用于比較不同組的數(shù)據(jù)分布情況。
為什么要使用山脊線圖?
- 平滑展示數(shù)據(jù)分布:與傳統(tǒng)的條形圖或直方圖相比,山脊線圖提供了一種更平滑、更直觀的方式來展示數(shù)據(jù)的分布情況。
- 比較能力:山脊線圖非常適合比較多個分布的形狀和大小,清晰地展示不同組之間的變化和趨勢。
- 空間效率:通過在單個圖中堆疊,山脊線圖可以有效地利用空間,避免了創(chuàng)建多個單獨的密度圖。
- 美觀性:山脊線圖在視覺上吸引人,用不同的顏色和樣式區(qū)分不同的組,使得數(shù)據(jù)更加生動和直觀。
- 趨勢識別:可以輕松識別多個群體數(shù)據(jù)中的共同模式和異常值。
- 適用于大量數(shù)據(jù)集:山脊線圖適用于展示大量數(shù)據(jù)集,而不會顯得擁擠或不清晰。
如何制作山脊線圖?
- 山脊線圖的制作基于核密度估計(Kernel Density Estimation,KDE),這是一種非參數(shù)估計概率密度函數(shù)的方法。
- 使用 JoyPy,一個基于 matplotlib + pandas 的輕量級 Python 包,可以輕松繪制山脊線圖 Joy Plot。
📚? 參考鏈接:
- 山脊線圖(Ridgeline Plots):一個被低估的數(shù)據(jù)可視化瑰寶
- HF.050 | 山脊圖、密度圖,最全總結(jié)實現(xiàn)方法在這里!
- 沈向洋:致 AI 時代的我們 —— 請不要忽視寫作的魅力