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

如何使用seaborn为KDE曲线下不同区间填充不同颜色

seaborn实现KDE曲线分区间填色

完全可以基于seaborn结合matplotlib的填充接口实现需求,不需要额外依赖第三方库。
核心思路是:先绘制无填充的KDE轮廓曲线,提取曲线上的所有坐标点,按x=0的分界规则拆分坐标序列,再分别对两个区间的曲线到横轴的区域填充指定颜色即可。这种方法直接复用seaborn计算好的KDE结果,和原生KDE曲线完全对齐,不会出现拟合偏差。

完整修改后代码

fig, ax1 = plt.subplots(1, 1, figsize = ((plot_size + 1.5) * 1,(plot_size + 1.5)))
# 绘制KDE轮廓线,关闭默认填充
kde_plot = sns.kdeplot(
    data=pd.DataFrame(w_contrast, columns=['contrast']),
    x="contrast",
    ax=ax1,
    fill=False,
    linewidth=1.5
)

# 提取KDE曲线的x、y坐标数据
x_vals = kde_plot.lines[0].get_xdata()
y_vals = kde_plot.lines[0].get_ydata()

# 填充x<0的左侧区域
left_mask = x_vals < 0
ax1.fill_between(
    x_vals[left_mask],
    y_vals[left_mask],
    0,
    color="#c44e52", # 可替换为你需要的左侧填充色
    alpha=0.8
)

# 填充x>=0的右侧区域
right_mask = x_vals >= 0
ax1.fill_between(
    x_vals[right_mask],
    y_vals[right_mask],
    0,
    color="#4c72b0", # 可替换为你需要的右侧填充色
    alpha=0.8
)

# 原有坐标轴设置保留
ax1.set_xlabel("Dry Yield Posterior Contrast (kg)")

可调参数说明

  • 两个fill_between方法中的color参数支持传入十六进制色值、RGB元组、matplotlib内置颜色名,可按需调整两个区域的配色
  • alpha参数控制填充透明度,取值范围0-1,数值越大填充颜色越实
  • linewidth参数控制KDE轮廓线的粗细,可根据展示需求调整
  • 如果需要修改分界位置,只需要调整left_mask和right_mask的判断条件即可,比如要按x=2分界,就把判断条件改成x_vals < 2和x_vals >=2

注意:必须给kdeplot传入fill=False参数关闭默认的全区间填充,否则会出现默认填充色和自定义填充色叠加的问题,影响展示效果。

内容的提问来源于stack exchange,提问作者Niko Gamulin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:27:18