python數據可視化之Seaborn(五):分類數據可視化

寫在開頭:今天分享的是關於分類數據繪圖的內容,學習鏈接同樣放在後文。

前文回顧
第一節分享了Seaborn繪圖的整體顏色與風格比例調控,可點擊鏈接查看。
python數據可視化之Seaborn(一)
第二節分享了連續、分類、離散數據的繪圖顏色的方法,可點擊鏈接查看。
python數據可視化之Seaborn(二)
第三節分享了對於數據分佈的繪圖方法,可點擊鏈接查看。
python數據可視化之Seaborn(三)
第四節分享了關於數據相關性的一些繪圖展示,可點擊鏈接查看。
python數據可視化之Seaborn(四)

Seaborn可視化內容安排

在Seaborn的學習中安排如下,
一、畫風設置:會簡單介紹一下繪圖風格(一)與顏色風格(二)的設置;
二、繪圖技巧:這裏會介紹數據集(三)、相關數據(四)、分類數據(五)、線性關係(六)可視化的相關內容;
三、結構網絡:本節主要介紹數據識別結構網絡的繪圖(七)。

二、Seaborn繪圖技巧

分類數據

在前文的相關數據分析中展示了變量之間相關性的可視化方法,在今天我們將分享關於分類數據如何繪圖進行可視化。也就是一個樣本它屬於不同類別的另一變量數據展示。在本文中主要使用catplot(),這個函數可以通過設置kind參數來達到與相關函數相同的繪圖效果,今天主要從繪製散點圖、分佈圖以及估計圖三大類。
首先加載使用的包,

import seaborn as sns
import matplotlib.pyplot as plt
sns.set_style("darkgrid")

類別散點圖
catplot()函數的默認爲繪製散點圖,然後散點圖就是去描述不同類別下數據的離散分佈情況,第一種方法就是直接繪製散點圖,

current_palette = sns.color_palette("Set2")
tips = sns.load_dataset("tips")
sns.catplot(x='day', y='total_bill', data=tips, palette=current_palette)

在這裏插入圖片描述
然後jitter參數可以將數據繪製在同一條線上,

sns.catplot(x='day', y='total_bill', data=tips, palette=current_palette, jitter=False)

在這裏插入圖片描述
第二種方法就是利用swarm畫法,可以避免數據的重疊,使得數據更好的展現出來,同樣可以用kind設置swarm進行圖形繪製。同樣在繪製圖形是有hue、size、style三個參數對圖形進行多維度類別區分繪圖,並且還可使用query函數對數據集進行選擇,

sns.catplot(x="size", y="total_bill", kind="swarm", palette=current_palette, 
            hue="sex", data=tips.query("size != 3"))

在這裏插入圖片描述
還可以通過order參數,對不同類別的數據繪製的先後順序進行調整,自定義類別排列,

sns.catplot(x="tip", y="smoker", order=["No", "Yes"], palette=current_palette, data=tips)

在這裏插入圖片描述
分佈數據圖
在繪製分佈數據圖形時,主要使用的是箱線圖與小提琴圖,這兩種圖在數據初始階段非常有用,能夠觀察到數據的整體分佈和異常值,以及不同類別之間的比較,一般可以用boxplot()函數進行繪製,此處可以更改kind參數用catplot()繪製,

current_palette2 = sns.color_palette("Pastel2")
sns.catplot(x="day", y="total_bill", kind="box", data=tips, palette=current_palette2)

在這裏插入圖片描述
同樣當使用hue、size和style參數時,可以對圖像進行更進一步的類別劃分,如果是箱線圖那麼將會繪製多維度箱線圖,

sns.catplot(x="day", y="total_bill", kind="box", hue="smoker", data=tips, palette=current_palette2)

在這裏插入圖片描述
有時爲了將一組箱線圖繪製不同的顏色,可以將默認dodge參數關閉,然後設置hue將一組箱線圖進行顯色的劃分,

tips["workday"] = tips["day"].isin(["Thur", "Fri"])
sns.catplot(x="day", y="total_bill", hue="workday",
            kind="box", dodge=False, data=tips, palette=current_palette2[2:4])

在這裏插入圖片描述
還有一種近似於箱線圖的,可以將kind參數調整爲boxen,這個方法比較適用於大型數據,可以看到不同大小的數據分佈情況,

sns.catplot(x="size", y="total_bill", kind="boxen", data=tips.sort_values("size"), palette=current_palette2)

在這裏插入圖片描述
下面我們來繪製小提琴圖,小提琴圖是箱線圖與核密度估計的結合體,核密度估計可以看前文繪圖第三章的講解,整體是箱線圖的形狀,上面的輪廓就是數據的核密度估計分佈線,

current_palette3 = sns.color_palette("Pastel1")
sns.catplot(x="total_bill", y="day", hue="sex",
            kind="violin", data=tips,  palette=current_palette3[2:4]);

在這裏插入圖片描述
同樣,根據核密度的相關參數,需要對核密度函數選擇窗寬或者設置cut參數來保留主要部分,

sns.catplot(x="total_bill", y="day", hue="sex", bw=.3, cut=0,
            kind="violin", data=tips,  palette=current_palette3[2:4]);

在這裏插入圖片描述
當箱線圖分組類別只有兩個時,我們可以設置splot參數讓每個類別值顯示一半,並且還可以在圖中顯示每個個體的存在位置,

sns.catplot(x="day", y="tip", hue="smoker", bw=.3, cut=0, split=True, inner="stick",
            kind="violin", data=tips,  palette=current_palette3[2:4]);

在這裏插入圖片描述
當然小提琴圖在顯示個體存在時,還可以結合類別散點圖進行多圖展示,通過ax進行圖像的連接,

g = sns.catplot(x="day", y="total_bill", kind="violin", inner=None, data=tips, palette=current_palette2)
sns.swarmplot(x="day", y="total_bill", size=3, data=tips, ax=g.ax, palette=current_palette);

在這裏插入圖片描述
分類數據整體分佈圖
常常我們需要看的不是每個類別的統計分佈,而是每個類別對於整體的趨勢變化,爲了解決這個問題我們有條形圖與點圖兩種繪圖方法來描述分類情況下的整體分佈。
首先繪製條形圖,條形圖的繪製可以使用barplot(),也可以調整catplot()kind的參數,在這裏的條形圖使用boostrap的方法計算誤差區間,並繪製誤差棒在圖上,

sns.catplot(x="sex", y="tip", hue="day", kind="bar", data=tips, palette=current_palette[3:8])

在這裏插入圖片描述
如果只想展示一個變量的分類統計計數情況的可視化,我們可以使用count參數值,來繪製單一變量數據統計圖,

sns.catplot(x='size', kind="count", data=tips, palette="ch:.78" )

在這裏插入圖片描述
當然改變軸後,單一變量的累計統計也可以進行分組展示,

sns.catplot(y='size', hue="sex", kind="count", data=tips, palette="ch:.44", edgecolor=".6" )

在這裏插入圖片描述
下面開始第二種展示分類數據統計分佈的圖也就是點圖,這種點圖可以快速的看出不同類別數據的關係也就是整體分佈以及自身的變化區間。在此之上還可以自定義標籤等,可以更改線條風格以及標記點形狀,

sns.catplot(x="day", y="total_bill", hue="sex", kind="point", markers=["^","o"], linestyles=["-", "--"],
            data=tips, palette=current_palette[3:8])

在這裏插入圖片描述
多元數據關係繪圖
這裏與relplot()繪圖差不多,也是機遇FacetGrid方法上繪圖,通過設置col或者row進行畫布的分隔,

sns.catplot(x="day", y="total_bill", hue="smoker",
            col="time", row="sex", aspect=.9,
            data=tips, palette="Set1");

在這裏插入圖片描述
結語
今天粗略的分享了關於分類數據的繪圖方法,主要有散點圖、箱線圖、小提琴圖、柱狀圖以及點圖,這些方法其實都有自己對應的函數,但在本文主要用集合函數繼續分享。
謝謝閱讀
參考
Seaborn繪圖文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章