如何使用sns.distplot调整参数扩展KDE曲线的显示范围
解决方案
Seaborn绘制KDE曲线时默认会按照输入数据的取值范围裁剪曲线,即便后续设置了更宽的x轴显示范围,曲线也不会自动延伸到x轴边界,只需调整KDE相关参数即可实现预期效果。
兼容原有distplot写法的修改代码
plt.figure(figsize=(6, 4)) ax = sns.distplot( np.log10(df['income']), kde=True, hist=False, rug=False, # 新增clip参数指定KDE绘制范围和x轴范围一致,cut设为足够大的值保证曲线延伸到边界 kde_kws = {"bw": 0.35, "clip": (0.7, 6.3), "cut": 10} ) plt.xlabel('人均国民总收入(阿特拉斯法,单位:美元,2016年)') plt.ylabel('') plt.title('世界银行人均国民总收入分布') plt.xlim(0.7, 6.3) plt.ylim(-0.05, 0.73)
参数说明
clip:直接限定KDE曲线的绘制区间,这里和你设置的x轴显示范围保持一致,避免曲线被默认裁剪cut:控制KDE曲线超出数据极值的长度,单位为带宽的倍数,设置为足够大的数值可以保证曲线完整延伸到你指定的clip边界
如果你使用的是v0.11及以上版本的Seaborn,distplot已经被官方废弃,更推荐使用kdeplot实现相同效果,代码如下:
plt.figure(figsize=(6, 4)) ax = sns.kdeplot( np.log10(df['income']), bw_adjust=0.35, clip=(0.7, 6.3), cut=10 ) plt.xlabel('人均国民总收入(阿特拉斯法,单位:美元,2016年)') plt.ylabel('') plt.title('世界银行人均国民总收入分布') plt.xlim(0.7, 6.3) plt.ylim(-0.05, 0.73)
内容的提问来源于stack exchange,提问作者user17257679
相关产品推荐
相关产品推荐

