问题描述
我正在尝试按组绘制线图,我想在其中添加覆盖 min
和 max
类别值的底层阴影。我想复制这样的情节,但灰色阴影覆盖了虚线和黑色实线之间的所有内容(未显示置信区间):
通常,这是使用 geom_ribbon
完成的,我需要在其中指定 aes(ymin = ymin,ymax = ymax)
的值。但是如何为组 ymin
和 ymax
的值传递 c
和 a
值(在我的示例中)?
这是我的虚拟示例:
# 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()
我的数据是长格式的,而且我有很多组,所以我希望有一些自动解决方案。提前致谢。
我的方法:
将数据从长格式转换为宽格式以将参数作为 ymin
和 ymax
传递。不能像使用两个不同的数据帧一样工作:
# 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 之间的阴影):
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)