在ggplot2中使用组汇总值作为geom_ribbon?

问题描述

我正在尝试按组绘制线图,我想在其中添加覆盖 minmax 类别值的底层阴影。我想复制这样的情节,但灰色阴影覆盖了虚线和黑色实线之间的所有内容(未显示置信区间):

enter image description here

通常,这是使用 geom_ribbon 完成的,我需要在其中指定 aes(ymin = ymin,ymax = ymax) 的值。但是如何为组 yminymax 的值传递 ca 值(在我的示例中)?

这是我的虚拟示例:

# example for shaded line plot
dd <- data.frame(year = c(1:5),group = rep(c("a","b","c"),each = 5),vals = c(5,5.2,5.6,5.8,6,5,4.9,4.8,4.7,4.2,4.4,4,3))
dd %>% 
  ggplot(aes(x = year,y = vals,shape = group,color = group,linetype = group)) +
  ylim(0,6.5) +
  geom_line(lwd  = 1.5)  +
  theme_bw()

我的数据是长格式的,而且我有很多组,所以我希望有一些自动解决方案。提前致谢。

我的方法:

将数据从长格式转换为宽格式以将参数作为 yminymax 传递。不能像使用两个不同的数据帧一样工作:

# maybe first convert data from long to wide?
library(tidyr)

dd.spread <- spread(dd,group,vals)

dd %>% 
  ggplot(aes(x = year,linetype = group)) +
  geom_line()  +
  geom_ribbon(dd.spread,aes(ymin = c,ymax = a),color = "grey70")

预期结果(a-c 之间的阴影):

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)