Python可視化 | Seaborn5分鐘入門(一)——kdeplot和distplot

微信公衆號:「Python讀財」
若有問題或建議,請公衆號留言

Seaborn是基於matplotlib的Python可視化庫。 它提供了一個高級界面來繪製有吸引力的統計圖形。Seaborn實際上是在matplotlib的基礎上進行了更高級的API封裝,從而使得做圖更加容易,不須要通過大量的調整就能使你的圖變得精緻。數組

image

Seaborn的安裝微信

>>>pip install seaborn

安裝完Seaborn包後,咱們就開始進入接下來的學習啦,首先咱們介紹kdeplot的畫法。dom

注:全部代碼均是在IPython notebook中實現函數


 kdeplot(核密度估計圖)

核密度估計(kernel density estimation)是在機率論中用來估計未知的密度函數,屬於非參數檢驗方法之一。經過核密度估計圖能夠比較直觀的看出數據樣本自己的分佈特徵。具體用法以下:工具

seaborn.kdeplot(data,data2=None,shade=False,vertical=False,kernel='gau',bw='scott',gridsize=100,cut=3,clip=None,legend=True,cumulative=False,shade_lowest=True,cbar=False, cbar_ax=None, cbar_kws=None, ax=None, kwargs)

咱們經過一些具體的例子來學習一些參數的用法:學習

首先導入相應的庫spa

%matplotlib inline  #IPython notebook中的魔法方法,這樣每次運行後能夠直接獲得圖像,再也不須要使用plt.show()
import numpy as np  #導入numpy包,用於生成數組
import seaborn as sns  #習慣上簡寫成snssns.set()           
sns.set()#切換到seaborn的默認運行配置

繪製簡單的一維kde圖像3d

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

image

cut:參數表示繪製的時候,切除帶寬往數軸極限數值的多少(默認爲3)code

sns.kdeplot(x,cut=0)

image

cumulative :是否繪製累積分佈orm

sns.kdeplot(x,cumulative=True)

image

shade:若爲True,則在kde曲線下面的區域中進行陰影處理,color控制曲線及陰影的顏色

sns.kdeplot(x,shade=True,color="g")

image

vertical:表示以X軸進行繪製仍是以Y軸進行繪製

sns.kdeplot(x,vertical=True)

image

二元kde圖像

y=np.random.randn(100)
sns.kdeplot(x,y,shade=True)

image

cbar:參數若爲True,則會添加一個顏色棒(顏色幫在二元kde圖像中才有)

sns.kdeplot(x,y,shade=True,cbar=True)

image

接下來,咱們接着學習功能更爲強大的distplot


distplot

displot()集合了matplotlib的hist()與核函數估計kdeplot的功能,增長了rugplot分佈觀測條顯示與利用scipy庫fit擬合參數分佈的新穎用途。具體用法以下:

seaborn.distplot(a, bins=None, hist=True, kde=True, rug=False, fit=None, hist_kws=None, kde_kws=None, rug_kws=None, fit_kws=None, color=None, vertical=False, norm_hist=False, axlabel=None, label=None, ax=None)

先介紹一下直方圖(Histograms):

直方圖又稱質量分佈圖,它是表示資料變化狀況的一種主要工具。用直方圖能夠解析出資料的規則性,比較直觀地看出產品質量特性的分佈狀態,對於資料分佈情況一目瞭然,便於判斷其整體質量分佈狀況。直方圖表示經過沿數據範圍造成分箱,而後繪製條以顯示落入每一個分箱的觀測次數的數據分佈。

接下來仍是經過具體的例子來體驗一下distplot的用法:

sns.distplot(x,color="g")

image

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

import matplotlib.pyplot as pltfig,axes=plt.subplots(1,3) #建立一個一行三列的畫布
sns.distplot(x,ax=axes[0]) #左圖
sns.distplot(x,hist=False,ax=axes[1]) #中圖
sns.distplot(x,kde=False,ax=axes[2]) #右圖

imagebins:int或list,控制直方圖的劃分

fig,axes=plt.subplots(1,2) 
sns.distplot(x,kde=False,bins=20,ax=axes[0]) #左圖:分紅20個區間
sns.distplot(x,kde=False,bins=[x for x in range(4)],ax=axes[1]) #右圖:以0,1,2,3爲分割點,造成區間[0,1],[1,2],[2,3],區間外的值不計入。

image

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

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

image

fit:控制擬合的參數分佈圖形,可以直觀地評估它與觀察數據的對應關係(黑色線條爲肯定的分佈)

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

image

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

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

image

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]) #右圖

image

還有其餘參數就不在此一一介紹了,有興趣繼續深刻學習的同窗能夠查看Seaborn的官方文檔。以上內容是我結合官方文檔和本身的一點理解寫成的,有什麼錯誤你們能夠指出來並提提意見共同交流、進步,也但願我寫的這些可以給閱讀完本文的你或多或少帶來一點幫助!

關注個人公衆號「Python讀財」,後臺回覆「py」便可獲取Python學習資源禮包,還有Python學習交流羣哦!

公衆號二維碼.jpg

相關文章
相關標籤/搜索