使用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")
它会改变点的颜色并添加到图例中,我不想这样做。
非常感谢任何建议!
答案 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
slope
,intercept
和colour
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