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
相关产品推荐
相关产品推荐

