更改ggplot上的ablines颜色

Sar*_*rah 3 r ggplot2

使用这些数据我拟合一个情节:

p <- ggplot(dat, aes(x=log(Explan), y=Response)) + 
      geom_point(aes(group=Area, colour=Area))+
      geom_abline(slope=-0.062712, intercept=0.165886)+
      geom_abline(slope= -0.052300, intercept=-0.038691)+
      scale_x_continuous("log(Mass) (g)")+
      theme(axis.title.y=element_text(size=rel(1.2),vjust=0.2),
            axis.title.x=element_text(size=rel(1.2),vjust=0.2),
            axis.text.x=element_text(size=rel(1.3)),
            axis.text.y=element_text(size=rel(1.3)),
            text = element_text(size=13)) +
      scale_colour_brewer(palette="Set1")
Run Code Online (Sandbox Code Playgroud)

这两个斜线表示每个区域趋势的系统发生调整的关系.我想知道,是否有可能在相应的调色板中获得与其适当的区域数据相同的缩写?第一个指定用于区域A,第二个用于区域B.

我用了:

g <- ggplot_build(p) 
Run Code Online (Sandbox Code Playgroud)

找出第一种颜色是#E41A1C,第二种颜色是#377EB8,但是当我尝试在+ geom_abline命令中使用aes来指定这些颜色时

p <- ggplot(dat, aes(x=log(Explan), y=Response)) + 
      geom_point(aes(group=Area, colour=Area))+
      geom_abline(slope=-0.062712, intercept=0.165886,aes(colour='#E41A1C'))+
      geom_abline(slope= -0.052300, intercept=-0.038691,aes(colour=#377EB8))+
      scale_x_continuous("log(Mass) (g)")+
      theme(axis.title.y=element_text(size=rel(1.2),vjust=0.2),
            axis.title.x=element_text(size=rel(1.2),vjust=0.2),
            axis.text.x=element_text(size=rel(1.3)),
            axis.text.y=element_text(size=rel(1.3)),
            text = element_text(size=13)) +
      scale_colour_brewer(palette="Set1")
Run Code Online (Sandbox Code Playgroud)

它会改变点的颜色并添加到图例中,我不想这样做.

任何建议将不胜感激!

Did*_*rts 12

由于您直接设置颜色,因此您不需要aes()使用colour='#E41A1C'.

+geom_abline(slope=-0.062712, intercept=0.165886,colour='#E41A1C')
Run Code Online (Sandbox Code Playgroud)


mne*_*nel 6

如果您正在读取线条的颜色以与从"区域"映射的点设置的颜色相对应,则可以使用适当的区域值来映射这些颜色.

例如

 geom_abline(slope=-0.062712, intercept=0.165886,aes(colour='A')) +
  geom_abline(slope= -0.052300, intercept=-0.038691,aes(colour='B'))
Run Code Online (Sandbox Code Playgroud)

这有额外的好处,如果你改变颜色方案它将是一致的.

第二种方法是传递包含斜率和截距和区域的data.frame,例如

 cc <- data.frame(sl = c(-0.062712,-0.052300), 
                  int = c(0.165886,-0.038691), 
                  Area = c('A','B'))
Run Code Online (Sandbox Code Playgroud)

那么你可以mapslope,interceptcolour以单个呼叫内geom_abline

例如

p <- ggplot(dat, aes(x=log(Explan), y=Response)) + 
    geom_point(aes(group=Area, colour=Area))+
    geom_abline(data = cc, aes(slope =sl, intercept = int,colour = Area)) +
    scale_x_continuous("log(Mass) (g)")+
    theme(axis.title.y=element_text(size=rel(1.2),vjust=0.2),
          axis.title.x=element_text(size=rel(1.2),vjust=0.2),
          axis.text.x=element_text(size=rel(1.3)),
          axis.text.y=element_text(size=rel(1.3)),
          text = element_text(size=13)) +
    scale_colour_brewer(palette="Set1")
p 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述