请考虑下面我使用下面的代码创建的图表。我想添加一个可能说“中位数”和“90%置信区间”的传奇。我已经看到这个问题部分地解决了here(感谢Roland),但是当我尝试在我自己的代码中实现它时,图例看起来很愚蠢,因为中间线没有填充功能。是否有某种方法可以使图例看起来更合理,它只显示中间线的一条线和功能区的填充框?
library(ggplot2)
middle = data.frame(t=c(0,1,2,3),value=c(0,2,4,6))
ribbon = data.frame(t=c(0,1,2,3),min=c(0,0,0,0),max=c(0,4,8,12))
g = ggplot()
g = g + geom_line (data=middle,aes(x=t,y=value),color='blue',size=2)
g = g + geom_ribbon(data=ribbon,aes(x=t,ymin=min,ymax=max),alpha=.3,fill='lightblue')
print(g)
library(ggplot2)
middle = data.frame(t=c(0,1,2,3),value=c(0,2,4,6))
ribbon = data.frame(t=c(0,1,2,3),min=c(0,0,0,0),max=c(0,4,8,12))
g = ggplot()
g = g + geom_ribbon(data=ribbon,aes(x=t,ymin=min,ymax=max,fill="CI" ,color="CI"))
g = g + geom_line (data=middle,aes(x=t,y=value, color="median"))
g = g + scale_colour_manual(values=c("lightblue","blue"))
g = g + scale_fill_manual (values=c("lightblue"))
print(g)
答案 0 :(得分:1)
首先,为guide="none"
设置scale_fill_manual()
,然后使用带有参数guides()
的函数override.aes=
根据行更改linetype=
和fill=
和置信区间。
ggplot() +
geom_ribbon(data=ribbon,aes(x=t,ymin=min,ymax=max,fill="CI" ,color="CI")) +
geom_line(data=middle,aes(x=t,y=value,color="median"))+
scale_colour_manual("Legend",values=c("lightblue","blue")) +
scale_fill_manual(values=c("lightblue"),guide="none")+
guides(colour = guide_legend(override.aes = list(linetype=c(0,1),fill=c("lightblue","white"))))