Ash*_*kan 5 python kernel-density seaborn
假设我们有一个数字在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. ])
Run Code Online (Sandbox Code Playgroud)
使用seaborn,我想绘制一个分布图:
sns.distplot(arr, hist=False)
Run Code Online (Sandbox Code Playgroud)
如您所见,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)})
Run Code Online (Sandbox Code Playgroud)
第二行引发一个异常- range不是有效的关键字kde_kws。
正确的方法是使用clip关键字而不是range:
sns.distplot(arr, hist=False, kde_kws={'clip': (0.0, 1.0)})
Run Code Online (Sandbox Code Playgroud)
实际上,如果只关心kde而不是直方图,则可以使用该kdeplot函数,该函数将产生相同的结果:
sns.kdeplot(arr, clip=(0.0, 1.0))
Run Code Online (Sandbox Code Playgroud)
Settinsplt.xlim(0, 1)事先应该有所帮助:
plt.xlim(0, 1)
sns.distplot(arr, hist=False)
Run Code Online (Sandbox Code Playgroud)