我正在尝试按组绘制线图,我想在其中添加下层阴影覆盖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,
5, 4.8, 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,
y = vals,
shape = group,
color = group,
linetype = group)) +
geom_line() +
geom_ribbon(dd.spread, aes(ymin = c, ymax = a), color = "grey70")
预期结果(ac 之间的阴影):