在python數據可視化(五)seaborn散點圖(分布散點、分簇散點圖)中我們繪制了分布散點圖和分簇散點圖來查看兩個變量的對應數據分布,本節内容我們接着上篇文章的數據繪制箱型圖和小提琴圖,至于箱型圖我在matplotlib中詳細介紹了箱型圖的特性,這裡在稍微啰嗦一下,箱型圖主要是來觀察離群點數據的。
seaborn.boxplot()這個函數主要是繪制出一個箱型圖來反映離群點數據。首先我們還是先來了解下使用的數據tips結構:
#導入依賴包 %matplotlib inline import matplotlib.pyplot as plt import seaborn as sns sns.set(style="whitegrid", color_codes=True) tips = sns.load_dataset("tips")
數據預覽
total_bill是消費總金額,tip是小費,size指用餐人數。boxplot()中數據參數有x和y,我們将消費數據依次傳給x和y看看繪圖效果:
sns.boxplot(x='tip',data=tips)
x=tip
sns.boxplot(y='tip',data=tips)
y=tip
sns.boxplot(y='tip',x='day',data=tips)
x=day,y=tip
通過對比上面3幅圖,我們很容易發現,boxplot()這個函數x,y兩個參數的含義,一個參數是觀察的連續變量數據,另一個參數是這個變量的分類屬性,比如圖3就很好的展示了不同星期中,小費數據的離群情況,其中周六離群點數據最多。同分布散點圖和分簇散點圖一樣,boxplot()這個函數也有hue參數,我們可以設置hue參數來繪制第二個分類數據,如下:
sns.boxplot(y='tip',x='day',hue='sex',data=tips)
根據性别分别繪制不同日期下的小費箱型圖
上面這個圖就很清晰的反映了不同星期不同性别的客戶付小費數據的分布,可以看到周六男性客戶出手大方,離群點數據較多。之前我們在介紹seaborn庫的時候說過,seaborn庫中的很多繪圖方法就是提前給你畫好模闆,我們隻需要把數據傳進去就得到相應的圖形,基于此,我沒是否可以在同一個模闆上同時繪制分簇圖和箱型圖呢?請看代碼:
sns.boxplot(x="day", y="total_bill", data=tips) sns.swarmplot(x="day", y="total_bill", data=tips, color=".25")
組合圖形(分簇和箱型圖)
seaborn.violinplot()這個函數繪制出箱型圖和核密度估計結合的圖形,核密度估計我們在後面的内容中詳細講,這裡大家對比直方圖理解,直方圖的概率密度曲線不連續,而核密度函數曲線是連續的,由于這個函數繪制出的圖形像個小提琴,因此我們也稱為繪制小提琴圖。我們将數據傳入,如下:
sns.violinplot(y='tip',x='day',data=tips)
不同星期數據對應小提琴圖
從圖中可以看到,小提琴圖即反映了數據的離群情況,同時也反映了數據的分布密度。此函數跟箱型圖一樣,也有hue參數,可以查看第二個分類屬性下的數據分布,如下:
sns.violinplot(y='tip',x='day',hue='sex',data=tips)
hue=sex
可以看到,上面的小提琴圖是4對8個,即當設置hue參數為sex時,每個小提琴的數據集是一類數據,那有沒有辦法讓男性對應數據和女性對應數據都作為一個數據集繪制出一個小提琴圖,隻是在一個圖中區分男性數據和女性數據呢?答案是肯定的,violinplot()函數提供了一個split參數,可以做到以上需求,如下:
sns.violinplot(y='tip',x='day',hue='sex',data=tips,split=True)
split=True
除此以外,我們再來看一下inner參數,上面的小提琴圖中内部都是箱型圖,通過inner參數,我們可以設置其他類型,inner可選參數有:box、quartile(四分位)、point、stick。我們依次看下:
sns.violinplot(y='tip',x='day',hue='sex',data=tips,split=True,inner="box") sns.violinplot(y='tip',x='day',hue='sex',data=tips,split=True,inner="quartile") sns.violinplot(y='tip',x='day',hue='sex',data=tips,split=True,inner="point") sns.violinplot(y='tip',x='day',hue='sex',data=tips,split=True,inner="stick")
inner=box
inner=point
inner=quartile
inner=stick
以上就是這兩個繪圖函數的常用用法,通過上面的一系列操作,大家可以發現seaborn繪圖非常簡單,我們隻需要将數據傳入相應的繪圖函數即可,後面兩個小節内容我們将會用熱度圖函數繪制詹姆斯、杜蘭特、倫納德等球員的投籃熱度圖,歡迎關注!
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!