2017-08-28 89 views
1

假設我們有一個數字0和1之間的一個數組:限制在seaborn x的範圍distplot KDE估計

arr=np.array([ 0.  , 0.  , 0.  , 0.  , 0.6934264 , 
       0.  , 0.  , 0.  , 0.  , 0.  , 
       0.  , 0.  , 0.6934264 , 0.  , 0.6934264 , 
       0.  , 0.  , 0.  , 0.  , 0.251463 , 
       0.  , 0.  , 0.  , 0.87104906, 0.251463 , 
       0.  , 0.  , 0.  , 0.  , 0.  , 
       0.  , 0.  , 0.  , 0.  , 0.48419626, 
       0.  , 0.  , 0.  , 0.  , 0.  , 
       0.87104906, 0.  , 0.  , 0.251463 , 0.48419626, 
       0.  , 0.251463 , 0.  , 0.  , 0.  , 
       0.  , 0.  , 0.  , 0.  , 0.  , 
       0.  , 0.251463 , 0.  , 0.35524532, 0.  , 
       0.  , 0.  , 0.  , 0.  , 0.251463 , 
       0.251463 , 0.  , 0.74209813, 0.  , 0.  ]) 

使用seaborn,我想繪製分佈圖:

sns.distplot(arr, hist=False) 

這將給我們下面的數字: enter image description here

正如你所看到的,kde的估計範圍從-0.20附近到1.10。是否有可能迫使估計值介於0和1之間?我曾嘗試以下,沒有運氣:

sns.distplot(arr, hist=False, hist_kws={'range': (0.0, 1.0)}) 
sns.distplot(arr, hist=False, kde_kws={'range': (0.0, 1.0)}) 

第二行拋出一個異常 - range不是kde_kws有效的關鍵字。

回答

1

這樣做的正確方法,是使用clip關鍵字,而不是range

sns.distplot(arr, hist=False, kde_kws={'clip': (0.0, 1.0)}) 

這將產生: enter image description here

事實上,如果你只關心KDE,而不是直方圖,可以使用kdeplot函數,這將產生相同的結果:

sns.kdeplot(arr, clip=(0.0, 1.0)) 
+0

D這實際上是重新計算kde還是隻切斷範圍之外的部分? – Peaceful