考虑数据:
enter code here
group <- rep(c("a", "b"), each=10)
res <- c(sample(20:30,10,T),sample(60:80,10,T) )
sd <- rnorm(20,2)
t <- rep(1:10,2)
df <- data.frame(t=t,group=group, res=res, sd=sd)
由此我想要这个情节:
ggplot(df, aes(x=t, y=res,
group=group,
colour=group,
shape=group ), linetype="solid")+
geom_point()+
geom_errorbar(aes(ymin=res-sd, ymax=res+sd))+
geom_line(aes(linetype=group))
问题: 图例不是映射美学 linetype 。 它正确地用于形状和颜色。
我还尝试将 linetype 设置为 geom_errorbar 中的整体映射和 linetype =&#34; solid&#34; ,但结果是一样的。见下面的代码。
ggplot(df, aes(x=t, y=res,
group=group,
colour=group,
shape=group,
linetype=group))+
geom_point()+
geom_errorbar(aes(ymin=res-sd, ymax=res+sd), linetype="solid")+
geom_line()
出于显而易见的原因,我不想要使用不同线型的错误栏。 对同一个变量进行这么多映射的原因是为了让它在屏幕上变得漂亮,并使黑色和白色打印变得友好。
我该如何绘制这个图并让图例也映射线型?
答案 0 :(得分:0)
这是一个选项:
ggplot(df, aes(x=t, y=res,
group=group,
colour=group,
shape=group,
linetype=group))+
geom_point()+
geom_errorbar(aes(ymin=res-sd, ymax=res+sd,
linetype = NULL)) + #remove the mapping
geom_line()