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

R ggplot2使用geom_step填充阶梯曲线下方区域的问题

问题原因分析
  • 阶梯线显示异常:你未给geom_step配置分组颜色映射,三个分组的阶梯线默认使用同一种黑色绘制,重叠后看起来仅有分组1的线条正常显示。
  • 填充区域不贴合阶梯走势:geom_ribbon默认使用线性插值连接相邻点,和geom_step的阶梯式插值逻辑不一致,无法对齐阶梯形状。
解决方法

给geom_ribbon指定stat = "step"对齐阶梯插值逻辑,同时给geom_step增加分组颜色映射即可,修正后代码如下:

library(ggplot2)
# 原始数据集
time = c(0, 5, 8, 11, 14, 18, 20, 0, 3, 7, 13, 19, 20, 0, 4, 9, 15, 18)
prob = c(1, 0.95, 0.80, 0.62, 0.30, 0.03, 0, 1, 0.92, 0.75, 0.57, 0.21, 0, 1, 0.80, 0.64, 0.43, 0)
group = c(1,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3)
df = data.frame(time, prob, group)

# 修正后绘图代码
plot1 = ggplot(df, aes(x = time, y = prob, group = group, fill = factor(group), color = factor(group))) +
  geom_step(linewidth = 1) +
  geom_ribbon(aes(ymin = 0, ymax = prob), stat = "step", alpha = 0.3) +
  labs(fill = "分组", color = "分组") # 统一两个图例的名称
print(plot1)

可选优化

如果需要调整阶梯的走向(先垂直变化再水平延伸),可以同时给geom_step和geom_ribbon添加direction = "vh"参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:36:00