You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用gaussian_kde绘制等高线时始终出现0.000线,如何消除?

解决gaussian_kde绘制等高线时出现0.000概率线的问题

问题原因

scipy.stats.gaussian_kde基于高斯核计算概率密度,在远离样本数据的区域,密度值会趋近于0。matplotlib的contour函数默认自动生成的等高线层级包含了这些极低的密度值,因此会画出最外层的0.000概率线。

解决方法

1. 手动指定等高线层级,排除极低密度范围

先筛选出kde结果中有效最小值,再生成从该值开始的等高线层级:

# 过滤掉接近0的极小值,取有效密度的最小值
min_valid_kde = kde5[kde5 > 1e-8].min()
# 生成30个从有效最小值到最大值的层级
levels = np.linspace(min_valid_kde, kde5.max(), 30)
# 使用指定层级绘制等高线
axes[1].contour(x5, y5, kde5, levels=levels, colors='g')

2. 过滤kde结果中的极小值

直接将低于阈值的密度值设为NaN,让contour忽略这些区域:

kde5_processed = kde5.copy()
# 设置阈值,将极小值替换为NaN
kde5_processed[kde5_processed < 1e-8] = np.nan
axes[1].contour(x5, y5, kde5_processed, 30, colors='g')

3. 配合vmin参数过滤低数值

在调用contour时设置vmin参数,指定绘制的最小密度值:

# vmin设置为接近0的阈值,低于该值的区域不绘制等高线
axes[1].contour(x5, y5, kde5, 30, colors='g', vmin=1e-8)

内容的提问来源于stack exchange,提问作者Ege Tunç

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 13:32:19