Python可視化 | Seaborn包—kdeplot和distplot


import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib
import matplotlib.pyplot as plt
from scipy.stats import skew
from scipy.stats.stats import pearsonr
%config InlineBackend.figure_format = 'retina'
%matplotlib inline

  

一、kdeplot(核密度估計圖)

核密度估計(kernel density estimation)是在概率論中用來估計未知的密度函數,屬於非參數檢驗方法之一。通過核密度估計圖可以比較直觀的看出數據樣本本身的分布特征。

 

x=np.random.randn(100)  #隨機生成100個符合正態分布的數
sns.kdeplot(x)

  

sns.kdeplot(x,cut=0) #cut:參數表示繪制的時候,切除帶寬往數軸極限數值的多少(默認為3)

  

sns.kdeplot(x,cumulative=True)#cumulative :是否繪制累積分布

  

sns.kdeplot(x,cumulative = True,shade=True,color = 'r')
#shade:若為True,則在kde曲線下面的區域中進行陰影處理,color控制曲線及陰影的顏色

 

 

 

sns.kdeplot(x,cumulative = True,shade=True,color = 'r',vertical = True)#vertical:表示以X軸進行繪制還是以Y軸進行繪制

  

 

 二元Kde圖像

y=np.random.randn(100)
sns.kdeplot(x,y,shade=True,cbar = True)#cbar:參數若為True,則會添加一個顏色棒(顏色幫在二元kde圖像中才有)

  

 

 

二、distplot()

displot()集合了matplotlib的hist()與核函數估計kdeplot的功能,增加了rugplot分布觀測條顯示與利用scipy庫fit擬合參數分布的新穎用途。
直方圖又稱質量分布圖,它是表示資料變化情況的一種主要工具。用直方圖可以解析出資料的規則性,比較直觀地看出產品質量特性的分布狀態,對於資料分布狀況一目了然,便於判斷其總體質量分布情況。直方圖表示通過沿數據范圍形成分箱,然后繪制條以顯示落入每個分箱的觀測次數的數據分布。
sns.distplot(x,color="g")

  

 

通過hist和kde參數調節是否顯示直方圖及核密度估計(默認hist,kde均為True)

fig,axes = plt.subplots(1,3)
sns.distplot(x,ax = axes[0])                #左圖 參數ax= 把圖形放在哪個框里
sns.distplot(x,hist = False ,ax = axes[1]) #中圖
sns.distplot(x,kde = False, ax = axes[2])  #右圖

  

 

 bins:int或list,控制直方圖的划分

fig,axes = plt.subplots(1,2)
sns.distplot(x,kde = False,bins = 20,ax = axes[0]) #kde=False 縱軸表示的時頻數不再是頻率
sns.distplot(x,kde = False,bins = [x for x in range(4)],ax = axes[1])

  

 

 rug:控制是否生成觀測數值的小細條

fig,axes = plt.subplots(1,2)
sns.distplot(x,rug=True,ax = axes[0]) #左圖
sns.distplot(x,ax = axes[1])           #右圖

  

 

 fit:控制擬合的參數分布圖形,能夠直觀地評估它與觀察數據的對應關系(黑色線條為確定的分布)

from scipy.stats import *
sns.distplot(x,hist = False,fit =norm) #fit = norm 擬合正態分布

  

 

? hist_kws, kde_kws, rug_kws, fit_kws參數接收字典類型,可以自行定義更多高級的樣式

sns.distplot(x,kde_kws={"label":"KDE"},vertical=True,color="y")

  

 

 ?norm_hist:若為True, 則直方圖高度顯示密度而非計數(含有kde圖像中默認為True)

fig,axes=plt.subplots(1,2)
sns.distplot(x,norm_hist=True,kde=False,ax=axes[0]) #左圖
sns.distplot(x,kde=False,ax=axes[1]) #右圖

  

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM