更改ggplot上的ablines颜色

时间:2013-07-03 16:50:59

标签: r ggplot2

使用this data我正在拟合一个情节:

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

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

我用过:

g <- ggplot_build(p) 

发现第一种颜色是#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")

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

非常感谢任何建议!

2 个答案:

答案 0 :(得分:11)

由于您直接设置了颜色,因此您只需使用aes()即可colour='#E41A1C'

+geom_abline(slope=-0.062712, intercept=0.165886,colour='#E41A1C')

答案 1 :(得分:6)

假设您正在读取线条的颜色以对应于从区域映射的点的设置,您可以使用适当的区域值来映射这些颜色。

例如

 geom_abline(slope=-0.062712, intercept=0.165886,aes(colour='A')) +
  geom_abline(slope= -0.052300, intercept=-0.038691,aes(colour='B'))

如果你改变颜色方案,这还有额外的好处。

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

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

然后,您可以map

一次调用slopeinterceptcolour 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 

enter image description here