使用geom_errorbar时未映射线型的图例

时间:2016-11-30 13:16:47

标签: r ggplot2

考虑数据:

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()

出于显而易见的原因,我不想要使用不同线型的错误栏。 对同一个变量进行这么多映射的原因是为了让它在屏幕上变得漂亮,并使黑色和白色打印变得友好。

我该如何绘制这个图并让图例也映射线型?

1 个答案:

答案 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()