ggplot2 abline和stat_smooth的图例

问题描述:

我有一些ggplot传说的问题,这里是我的第一个代码,只有corrGenes的图例,这很好。ggplot2 abline和stat_smooth的图例

gene1=c(1.041,0.699,0.602,0.602,2.585,0.602,1.000,0.602,1.230,1.176,0.699,0.477,1.322) 
    BIME = c(0.477,0.477,0.301,0.477,2.398,0.301,0.602,0.301,0.602,0.699,0.602,0.477,1.176) 
    corrGenes=c(0.922,0.982,0.934,0.917,0.993,0.697,0.000,0.440,0.859,0.788,0.912,0.687,0.894) 

DF=data.frame(gene1,BIME,corrGenes) 

plot= ggplot(data=DF,aes(x=gene1,y=BIME))+ 
    geom_point(aes(colour=corrGenes),size=5)+ 
    ylab("BIME normalized counts (log10(RPKM))")+ 
    xlab("gene1 normalized counts (log10(RPKM))") 

当我添加abline流畅,我得到了正确的阴谋:

plot= ggplot(data=DF,aes(x=gene1,y=BIME))+ 
    geom_point(aes(colour=corrGenes),size=5)+ 
    geom_abline(intercept=0, slope=1)+ 
    stat_smooth(method = "lm",se=FALSE)+ 
    ylab("BIME normalized counts (log10(RPKM))")+ 
    xlab("gene1 normalized counts (log10(RPKM))") 

,但没有办法让他们的传说,我想等多种组合:

plot= ggplot(data=DF,aes(x=gene1,y=BIME))+ 
    geom_point(aes(colour=corrGenes),size=5)+ 
    geom_abline(aes(colour="best"),intercept=0, slope=1)+ 
    stat_smooth(aes(colour="data"),method = "lm",se=FALSE)+ 
    scale_colour_manual(name="Fit", values=c("data"="blue", "best"="black"))+ 
    ylab("BIME normalized counts (log10(RPKM))")+ 
    xlab("gene1 normalized counts (log10(RPKM))") 

如果有人有解决这个微小但非常烦人的问题的想法,这将是非常有益的!

最后,我发现用了一招花药方式。首先,我计算了线性回归并将结果转换为一个数据框,我添加了我的最佳拟合(截距= 0和斜率= 1),然后为数据类型(数据或最佳)添加了一列。

modele = lm(BIME ~ gene1, data=DF) 
coefs = data.frame(intercept=coef(modele)[1],slope=coef(modele)[2]) 
coefs= rbind(coefs,list(0,1)) 
regression=as.factor(c('data','best')) 
coefs=cbind(coefs,regression) 

然后我与唯一geom_abline命令绘制并从ggplot移动DF()来geom_point()和所使用的线型参数者区分的两行:

plot = ggplot()+ 
    geom_point(data=pointSameStrandDF,aes(x=gene1,y=BIME,colour=corrGenes),size=5)+ 
    geom_abline(data=coefs, aes(intercept=intercept,slope=slope,linetype=regression), show_guide=TRUE)+ 
    ylab("BIME normalized counts (log10(RPKM))")+ 
    xlab("gene1 normalized counts (log10(RPKM))") 

有可能是这两条线的颜色使用方法,但我不知道如何?

感谢您的帮助!

show_guide=TRUE参数应显示geom_ablinestat_smooth的图例。尝试运行下面的代码。

plot= ggplot(data=DF,aes(x=gene1,y=BIME))+ 
geom_point(aes(colour=corrGenes),size=5)+ 
geom_abline(aes(colour="best"),intercept=0, slope=1, show_guide=TRUE)+ 
stat_smooth(aes(colour="data"),method = "lm",se=FALSE, show_guide=TRUE)+ 
scale_colour_manual(name="Fit", values=c("data"="blue", "best"="black"))+ 
ylab("BIME normalized counts (log10(RPKM))")+ 
xlab("gene1 normalized counts (log10(RPKM))") 
+0

感谢您的回答,我已经尝试过了,但是我得到了同样的错误:'错误:提供给离散量程的连续值' – Mesmer

+0

如果您删除了scale_colour_manual行,那么是否可以解决问题? – figurine

+0

不,同样的错误:( – Mesmer

不知道这是最好的解决办法,但我可以告诉ggplot有两种尺度,一个是颜色(贵点),另一个用于填充颜色。你可能会问哪种填充颜色?一个我在aes添加了两行:

plot = ggplot(data=DF,aes(x=gene1,y=BIME)) + 
    geom_point(size=5, aes(colour=corrGenes)) + 
    geom_abline(aes(fill="black"),intercept=0, slope=1) + 
    stat_smooth(aes(fill="blue"), method = "lm",se=FALSE) + 
    scale_fill_manual(name='My Lines', values=c("black", "blue"))+ 
    ylab("BIME normalized counts (log10(RPKM))")+ 
    xlab("gene1 normalized counts (log10(RPKM))") 

enter image description here

+0

感谢mucio,它好多了,但仍然有一个小问题,我不明白,为什么颜色图例是蓝色的,而不是回蓝色,因为您指定'geom_abline(aes(fill =“black”),intercept = 0,slope = 1)','stat_smooth(aes(fill =“blue”),method =“lm”,se = FALSE)'并将其链接到'scale_fill_manual(name ='My Lines',values = c(“black”,“blue”))' – Mesmer