问题描述
我正在使用一个有列的数据框:
species replicate position DOY RED.PEAK RED.PEAK.SD FAR.RED.PEAK FAR.RED.PEAK.SD
1 LINGONBERRY 1 LOW 1 0.10218177 0.050779465 0.14498610 0.04848566
2 LINGONBERRY 1 LOW 10 0.12089622 0.039990500 0.18177440 0.03263417
3 LINGONBERRY 1 LOW 2 0.10861619 0.039823347 0.20582430 0.05709061
4 LINGONBERRY 1 LOW 3 0.05398631 0.006064099 0.10750730 0.01954550
5 LINGONBERRY 1 LOW 4 0.08722205 0.017874483 0.14446139 0.03133565
6 LINGONBERRY 1 LOW 5 0.04872162 0.028601630 0.09535204 0.02216967
以物种,复制品,位置和时间为例,RED.PEAK和FAR.RED.PEAK是我的值,RED.PEAK。 SD 和FAR.RED.PEAK。 SD 是RED.PEAK和FAR.RED.PEAK的标准偏差。
我正在使用ggplot用facet_grid绘制不同的物种(3), 线型的不同位置(2), 以及带有颜色的不同复制品(3)。
NEW.gridplot <- ggplot(new.plot.table,aes(DOY,RED.PEAK,group=interaction(position,replicate)))+
scale_x_discrete(limit = c("II Feb","I Mar","II Mar","I Apr","II Apr","I May","II May","I Jun","II Jun","I Jul"))+
facet_grid(.~species)+
geom_line(aes(color=replicate,linetype=position),size=2)+
scale_linetype_manual(values=c("dashed","solid")) +
scale_color_manual(values = c('black','red','blue')) +
geom_ribbon(aes(ymin = RED.PEAK - RED.PEAK.SD,ymax = RED.PEAK + RED.PEAK.SD),alpha = 0.1) +
myplotting
print(NEW.gridplot)
see an example of ggplot I am having now
,效果很好。但是,我也想在geom_ribbon中将阴影着色为黑色,蓝色和红色。
geom_ribbon(aes(ymin = RED.PEAK - RED.PEAK.SD,alpha = 0.1,fill=(values = c('black','blue')))
不起作用,出现错误 错误:美学的长度必须为1或与数据相同(150):填充 然后:
geom_ribbon(aes(ymin = ORANGE.PEAK - ORANGE.PEAK.SD,ymax = ORANGE.PEAK + ORANGE.PEAK.SD),fill=replicate)+
scale_fill_manual(values = c('black','blue'))
也不起作用,传递错误 rep(value [[k]],length.out = n)中的错误: 尝试复制“ closure”类型的对象
正在寻找一种解决方案,以使来自geom_ribbon的阴影与来自geom_line的相应阴影具有相同的颜色。
解决方法
我认为您的第二次尝试几乎是正确的。但是fill=...
应该在aes
函数内部,然后您需要另一个```scale_fill_manual````:
geom_ribbon(aes(ymin = RED.PEAK - RED.PEAK.SD,ymax = RED.PEAK + RED.PEAK.SD,fill = c("black","red","blue")),alpha = 0.1,show.legend = F) +
scale_fill_manual(values = c("black","blue"))