R ggplot2用于abline和stat_平滑的图例

R ggplot2用于abline和stat_平滑的图例,r,ggplot2,legend,R,Ggplot2,Legend,我对ggplot图例有一些问题,这里是我的第一个代码,只有corrGenes的图例,这很好 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.9

我对ggplot图例有一些问题,这里是我的第一个代码,只有corrGenes的图例,这很好

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和smooth时,我得到了正确的绘图:

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

如果有人有办法解决这个小而烦人的问题,那将是非常有帮助的

参数
show\u guide=TRUE
应显示
geom\u abline
stat\u 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))")

不确定这是否是最佳解决方案,但我能够告诉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))")

最后,我找到了另一种使用技巧的方法。首先,我计算了线性回归,并将结果转换为一个数据框,我添加了我的最佳拟合(Intercept=0和slope=1),然后我添加了一列数据类型(data或best)

然后,我使用一个唯一的geom_abline命令将其打印出来,并将DF从ggplot()移动到geom_point(),并使用linetype参数区分两条线:

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))")
也许有一种方法可以为这两条线使用颜色,但我不知道如何使用


谢谢你们的帮助,伙计们

谢谢你的回答,我已经试过了,但我得到了相同的错误:
错误:提供给离散刻度的连续值
如果你删除刻度(颜色)(手动行)这能解决问题吗?@Mesmer
错误:提供给离散刻度的连续值
大多数情况下意味着
R
正在读取将字符改为连续字符。尝试
x谢谢mucio,这要好得多,但还有一个小问题我不明白,为什么颜色图例是蓝色的,而不是像您指定的
geom\u abline(aes(fill=“black”)、intercept=0、slope=1)
stat\u smooth(aes(fill=“blue”)、method=“lm”、se=FALSE)
并将其链接到
scale\u fill\u手册(name='My line',values=c(“黑色”、“蓝色”))
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))")