R语言geom_ribbon处理非唯一x值时的aes(x)参数设置问题
你遇到的竖线问题来自两个错误设置:
- geom_ribbon未按
model分组,不同模型的置信区间端点被强行连接 - 手动将geom_ribbon的x映射为行号,和全局x轴的
testOn日期映射错位,同时geom_line设置group=1也不符合分组绘图逻辑
第一步:数据预处理
先将testOn列转为日期格式,避免x轴排序异常:
library(dplyr) DF <- DF %>% mutate(testOn = as.Date(testOn))
第二步:修正绘图代码
如果需要按不同模型单独绘制折线和置信区间,使用如下代码:
library(ggplot2) ggplot(data = DF, aes(y = mean, x = testOn, color = model, fill = model))+ # 按model分组绘制折线 geom_line(aes(group = model))+ geom_point(size = 1.3)+ # 直接用全局x映射,无需手动设置x,按model分组绘制置信区间 geom_ribbon(aes(ymin = lci, ymax = uci, group = model), alpha = 0.3, show.legend = FALSE)
如果你需要保留原来所有模型折线连为一条的效果(和你原代码group=1逻辑一致),仅调整geom_ribbon设置即可:
ggplot(data = DF, aes(y = mean, x = testOn, color = model))+ geom_line(aes(group=1))+ geom_point(size = 1.3)+ geom_ribbon(aes(ymin=lci, ymax=uci, group = model, fill = model), alpha = 0.3, show.legend = FALSE)
内容的提问来源于stack exchange,提问作者Ylenia Rotalinti
相关产品推荐
相关产品推荐

