5

使用这些数据,我正在拟合一个图:

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

这两个 ablines 代表每个区域趋势的系统发育调整关系。我想知道,是否可以将 ablines 与相应的区域数据放在相同的调色板中?第一个指定用于区域 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")

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

任何建议将不胜感激!

4

2 回答 2

15

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

+geom_abline(slope=-0.062712, intercept=0.165886,colour='#E41A1C')
于 2013-07-03T17:02:40.290 回答
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在一次调用slopeinterceptcolourgeom_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 

在此处输入图像描述

于 2013-07-04T03:07:41.580 回答