如何添加两个不同行R的ggplot图例?

use*_*018 2 r legend ggplot2

我需要在我的两个地块的顶部添加两条线(最佳拟合线和45度线)的图例.对不起,我不知道如何添加情节!请帮助我,我真的很感激!!!!

这是一个例子

type=factor(rep(c("A","B","C"),5))
xvariable=seq(1,15)
yvariable=2*xvariable+rnorm(15,0,2)
newdata=data.frame(type,xvariable,yvariable)
p = ggplot(newdata,aes(x=xvariable,y=yvariable))
p+geom_point(size=3)+ facet_wrap(~ type) +
  geom_abline(intercept =0, slope =1,color="red",size=1)+ 
  stat_smooth(method="lm", se=FALSE,size=1)
Run Code Online (Sandbox Code Playgroud)

Bri*_*ggs 7

这是另一种方法,它使用美学映射来串常量来识别不同的组并创建图例.

首先是另一种创建测试数据的方法(并将其命名为DF代替newdata)

DF <- data.frame(type = factor(rep(c("A", "B", "C"), 5)),
                 xvariable = 1:15,
                 yvariable = 2 * (1:15) + rnorm(15, 0, 2))
Run Code Online (Sandbox Code Playgroud)

现在的ggplot代码.请注意,对于两者geom_ablinestat_smooth,colour都设置在内部并aes调用,这意味着所使用的两个值中的每一个将被映射到不同的颜色,并且将为该映射创建指南(图例).

ggplot(DF, aes(x = xvariable, y = yvariable)) +
  geom_point(size = 3) + 
  geom_abline(aes(colour="one-to-one"), intercept =0, slope = 1, size = 1) +
  stat_smooth(aes(colour="best fit"), method = "lm", se = FALSE, size = 1) + 
  facet_wrap(~ type) +
  scale_colour_discrete("")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述