更新時間:2022-09-07 來源:黑馬程序員 瀏覽量:
Matplotlib雖然已經(jīng)是比較優(yōu)秀的繪圖庫了,但是它有個今人頭疼的問題,那就是API使用過于復(fù)雜,它里面有上千個函數(shù)和參數(shù),屬于典型的那種可以用它做任何事,卻無從下手。
Seaborn基于 Matplotlib核心庫進行了更高級的API封裝,可以輕松地畫出更漂亮的圖形,而Seaborn的漂亮主要體現(xiàn)在配色更加舒服,以及圖形元素的樣式更加細膩。
不過,使用Seaborn繪制圖表之前,需要安裝和導(dǎo)入繪圖的接口,具體代碼如下:
#安裝 pip3installseaborn
#導(dǎo)入 importseabornassns
Seaborn庫的可視化數(shù)據(jù)分布
當(dāng)處理一組數(shù)據(jù)時,通常先要做的就是了解變量是如何分布的。
對于單變量的數(shù)據(jù)來說采用直方圖或核密度曲線是個不錯的選擇,對于雙變量來說,可采用多面板圖形展現(xiàn),比如散點圖、二維直方圖、核密度估計圖形等。
針對這種情況,Seaborn庫提供了對單變量和雙變量分布的繪制函數(shù),如displot()函數(shù)、jointplot()函數(shù),下面來介紹這些函數(shù)的使用。
繪制單變量分布
可以采用最簡單的直方圖描述單變量的分布情況。Seaborn中提供了distplot()函數(shù),它默認繪制的是一個帶有核密度估計曲線的直方圖。distplot()函數(shù)的語法格式如下。
seaborn.distplot(a,bins=None,hist=True,kde=True,rug=False,fit=None,color=None)
上述函數(shù)中常用參數(shù)的含義如下:
(1)a:表示要觀察的數(shù)據(jù),可以是Series、一維數(shù)組或列表。
(2)bins:用于控制條形的數(shù)量。
(3)hist:接收布爾類型,表示是否繪制(標注)直方圖。
(4)kde:接收布爾類型,表示是否繪制高斯核密度估計曲線。
(5)rug:接收布爾類型,表示是否在支持的軸方向上繪制rugplot。
通過distplot())函數(shù)繪制直方圖的示例如下。
importnumpyasnp sns.set() np.random.seed(0)#確定隨機數(shù)生成器的種子,如果不使用每次生成圖形不一樣 arr=np.random.randn(100)#生成隨機數(shù)組
ax=sns.distplot(arr,bins=10,hist=True,kde=True,rug=True)#繪制直方圖
上述示例中,首先導(dǎo)入了用于生成數(shù)組的numpy庫,然后使用seaborn調(diào)用set()函數(shù)獲取默認繪圖,并且調(diào)用random模塊的seed函數(shù)確定隨機數(shù)生成器的種子,保證每次產(chǎn)生的隨機數(shù)是一樣的,接著調(diào)用randn()函數(shù)生成包含100個隨機數(shù)的數(shù)組,最后調(diào)用distplot()函數(shù)繪制直方圖。
運行結(jié)果如下圖所示。
上圖中看出:
直方圖共有10個條柱,每個條柱的顏色為藍色,并且有核密度估計曲線。
根據(jù)條柱的高度可知,位于-1-1區(qū)間的隨機數(shù)值偏多,小于-2的隨機數(shù)值偏少。
通常,采用直方圖可以比較直觀地展現(xiàn)樣本數(shù)據(jù)的分布情況,不過,直方圖存在一些問題,它會因為條柱數(shù)量的不同導(dǎo)致直方圖的效果有很大的差異。為了解決這個問題,可以繪制核密度估計曲線進行展現(xiàn)。
核密度估計是在概率論中用來估計未知的密度函數(shù),屬于非參數(shù)檢驗方法之一,可以比較直觀地看出數(shù)據(jù)樣本本身的分布特征。
通過distplot()函數(shù)繪制核密度估計曲線的示例如下。
#創(chuàng)建包含500個位于[0,100]之間整數(shù)的隨機數(shù)組 array_random=np.random.randint(0,100,500) #繪制核密度估計曲線 sns.distplot(array_random,hist=False,rug=True)
上述示例中,首先通過random.randint()函數(shù)返回一個最小值不低于0、最大值低于100的500個隨機整數(shù)數(shù)組然后調(diào)用displot()函數(shù)繪制核密度估計曲線。 運行結(jié)果如圖所示。
從上圖中看出,圖表中有一條核密度估計曲線,并且在x軸的上方生成了觀測數(shù)值的小細條。