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

R语言ggplot为密度图分位数区域添加填充色的实现问题

ggplot密度图分位数区域填充解决方案
library(ggplot2)

# 构造测试数据集
dt <- data.frame(scores = rnorm(200))
dens <- density(dt$scores)
df <- data.frame(x = dens$x, y = dens$y)

# 计算目标分位数
quantiles <- quantile(dt$scores, prob = c(0.25, 0.5, 0.75))
df$quantile <- factor(findInterval(df$x, quantiles))
levels(df$quantile) <- c("<25%", "25%-50%", "50-75%", "75-100%")

# 最终绘图代码
ggplot(df, aes(x, y)) + 
  geom_line() + 
  # 配置填充透明度,alpha取值0-1,数值越小透明度越高
  geom_ribbon(aes(ymin = 0, ymax = y, fill = quantile), alpha = 0.6) + 
  # X轴直接使用分位数对应的原始分数作为刻度,无需额外设置百分比标签
  scale_x_continuous(breaks = quantiles) +
  # 自定义4个分位区间的填充色,可自行替换values内的颜色值
  scale_fill_manual(values = c("#FFE4B5", "#98FB98", "#87CEFA", "#DDA0DD"))

修改说明

  • X轴显示原始分数:原代码scale_x_continuous(breaks=quantiles)中quantiles本身就是原始分数计算得到的数值,只要不为该函数额外配置百分比格式的labels参数,X轴默认就会展示原始分数刻度。
  • 自定义填充色:通过scale_fill_manual的values参数传入4个颜色值即可,支持十六进制颜色码、R内置颜色名两种格式。
  • 调整填充透明度:在geom_ribbon中新增alpha参数,取值范围为0~1,可根据视觉效果灵活调整。

内容的提问来源于stack exchange,提问作者Oscar Kjell

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:57:02