限制 seaborn distplot KDE 估计中 x 的范围
Limit the range of x in seaborn distplot KDE estimation
假设我们有一个数组,其中的数字介于 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)
这会给我们下图:
如您所见,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)})
这将产生:
的确,如果你只关心kde而不关心直方图,你可以使用kdeplot
函数,它会产生相同的结果:
sns.kdeplot(arr, clip=(0.0, 1.0))
事先设置 plt.xlim(0, 1)
应该会有帮助:
plt.xlim(0, 1)
sns.distplot(arr, hist=False)
假设我们有一个数组,其中的数字介于 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)
这会给我们下图:
如您所见,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)})
这将产生:
的确,如果你只关心kde而不关心直方图,你可以使用kdeplot
函数,它会产生相同的结果:
sns.kdeplot(arr, clip=(0.0, 1.0))
事先设置 plt.xlim(0, 1)
应该会有帮助:
plt.xlim(0, 1)
sns.distplot(arr, hist=False)