假设我们有一个数字在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)

这将为我们提供下图:
python - 限制海洋分布图KDE估计中x的范围-LMLPHP

如您所见,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的有效关键字。

最佳答案

正确的方法是使用clip关键字而不是range:

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

会产生:
python - 限制海洋分布图KDE估计中x的范围-LMLPHP

确实,如果只关心kde而不是直方图,则可以使用kdeplot函数,该函数将产生相同的结果:
sns.kdeplot(arr, clip=(0.0, 1.0))

关于python - 限制海洋分布图KDE估计中x的范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45911709/

10-10 11:01