web-dev-qa-db-ja.com

海生まれのdistplotKDE推定でxの範囲を制限する

0から1までの数値の配列があるとします。

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)})

2行目で例外が発生します--rangekde_kwsの有効なキーワードではありません。

5
Ashkan

これを行う正しい方法は、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))
7
Ashkan

事前にplt.xlim(0, 1)を設定すると、次のことが役立ちます。

plt.xlim(0, 1)
sns.distplot(arr, hist=False)
5
R. Cox