R 如何使用不同的“几何图形线”添加第二个图例?

R 如何使用不同的“几何图形线”添加第二个图例?,r,ggplot2,R,Ggplot2,我正在为不同的个体(IDs)绘制两个变量(X和Y)之间的关系。这种关系用实际值(geom_point)和表示不同个体线性混合效应模型(LME)变量之间关系预测的线来表示。除此之外,两个变量之间的线性关系以及不同个体之间的线性关系是使用第二个定量预测因子(Z)的三个水平来完成的 因此,我要做的是使用geom_point()来显示X和Y的原始值之间的关系。然后,我将三个geom_line()用于三个具有不同Z级别的LME。因此,每个geom_line()为固定Z的六个IDs绘制六条线。因此,由于我有

我正在为不同的个体(
ID
s)绘制两个变量(
X
Y
)之间的关系。这种关系用实际值(
geom_point
)和表示不同个体线性混合效应模型(LME)变量之间关系预测的线来表示。除此之外,两个变量之间的线性关系以及不同个体之间的线性关系是使用第二个定量预测因子(
Z
)的三个水平来完成的

因此,我要做的是使用
geom_point()
来显示
X
Y
的原始值之间的关系。然后,我将三个
geom_line()
用于三个具有不同
Z
级别的LME。因此,每个
geom_line()
为固定
Z
的六个
ID
s绘制六条线。因此,由于我有3个
Z
级别和3个
geom_line()
,所以我有18行

我试过这个(注意:代码是简化的):


Plot\u legend试试这种方法。由于没有共享数据,我可以对其进行测试,但它可以在正确的路径中寻址:

library(ggplot2)
#Code
Plot_legend <- ggplot(df, aes(x=X, y=Y, colour=ID)) + 
  geom_point(size=1.5,alpha=0.2) +
  geom_line(aes(y=predict(model,df.Z_low), group=ID, linetype = c("1")),
            size=1.5, alpha=0.6, color = line_colors[3]) +
  geom_line(aes(y=predict(model,df.Z_medium), group=ID, linetype = c("2")),
            size=1.5, alpha=0.6, color = line_colors[2]) +
  geom_line(aes(y=predict(model,df.Z_high), group=ID, linetype = c("3")),
            size=1.5, alpha=0.6, color = line_colors[1]) +
  geom_abline(aes(slope=1,intercept=0),linetype="dashed",color="grey52",size=1.5) +
  theme_bw() +
  scale_linetype_manual(values=c('solid','solid','solid'))+
  scale_color_manual(values=c(line_colors[3],line_colors[2],line_colors[1]))+
  labs(linetype='Z')
  theme(legend.text=element_text(size=18),
        legend.title = element_text(size=19, face = "bold",hjust = 0.5),
        legend.key=element_blank(),
        legend.background = element_rect(colour = 'black', fill = 'white', size = 1, linetype='solid')) +
  guides(color=guide_legend(override.aes=list(fill=NA)))
库(ggplot2)
#代码

Plot_legend我最后使用了下一个代码:

Plot_legend <- ggplot(df, aes(x=X, y=Y, colour=ID)) + 
  geom_point(size=1.5,alpha=0.2) +
  geom_abline(aes(slope=1,intercept=0),linetype="dashed",color="grey52",size=1.5) +
  theme_bw() + 
  theme(legend.text=element_text(size=18),
        legend.title = element_text(size=19, face = "bold",hjust = 0.5),
        legend.key=element_blank(),
        legend.background = element_rect(colour = 'black', fill = 'white', size = 1, linetype='solid')) +
  guides(color=guide_legend(override.aes=list(fill=NA)))

Plot_legend

Plot_legend_2 <- Plot_legend +
  geom_line(aes(y=predict(model,df.Z_low), group=ID, linetype = "m1"), size=1.5, alpha=0.6, color = line_colors[3]) +
  geom_line(aes(y=predict(model,df.Z_medium), group=ID, linetype ="m2"), size=1.5, alpha=0.6, color = line_colors[2]) +
  geom_line(aes(y=predict(model,df.Z_high), group=ID, linetype ="m3"), size=1.5, alpha=0.6, color = line_colors[1]) +
  scale_linetype_manual(values = c(m1 = "solid", m2 = "solid", m3 = "solid"),labels = c(m1 = "1", m2 = "2", m3 = "3")) +
  labs(color = "ID", linetype = expression(Z)) +
  guides(linetype = guide_legend(override.aes = list(color = line_colors)))

Plot_legend_2

Plot\u legend感谢@Duck抽出时间。我收到下一条错误消息:“错误:手动刻度中的值不足。需要6,但只提供3”。我不知道它指的是什么价值观。有6个
ID
s,它是指那个吗?不同的
ID
s和geom_行()的总和是9,而不是6。@Dekike Hi亲爱的。它不是总和,而是绘图中所有线条的颜色。你能用任意颜色设置smt吗:
scale\u color\u manual(值=c('blue'、'pink'、'red'、'tomato'、'洋红'、'cyan3'))
?如果没有工作注释,请选中该行并检查其他元素,如线型!艾未未,谢谢!我试过你说的了。我更改了
scale\u color\u manual()
scale\u linetye\u manual()
以使其正常工作。在
scale\u color\u manual()。我已经检查过,这会改变我的图表点的颜色。我把情节上传到帖子里,这样你就可以看到了。我使用蓝色作为
的颜色,这样你就可以很容易地看到代码的作用。@Dekike我看到了,看起来很棒,你还需要做什么?不!!我需要的是用线条改变传奇的颜色!我的意思是,传奇的颜色应该与你在情节中看到的颜色相同(红色、蓝色和绿色)。颜色由
行颜色[1]
等编码。您明白吗?我不想改变我的点的颜色,它们还可以。不同的颜色代表不同的
ID
s。我想更改与
geom_line()
关联的图例,从而更改与线条关联的图例。
Plot_legend <- ggplot(df, aes(x=X, y=Y, colour=ID)) + 
  geom_point(size=1.5,alpha=0.2) +
  geom_abline(aes(slope=1,intercept=0),linetype="dashed",color="grey52",size=1.5) +
  theme_bw() + 
  theme(legend.text=element_text(size=18),
        legend.title = element_text(size=19, face = "bold",hjust = 0.5),
        legend.key=element_blank(),
        legend.background = element_rect(colour = 'black', fill = 'white', size = 1, linetype='solid')) +
  guides(color=guide_legend(override.aes=list(fill=NA)))

Plot_legend

Plot_legend_2 <- Plot_legend +
  geom_line(aes(y=predict(model,df.Z_low), group=ID, linetype = "m1"), size=1.5, alpha=0.6, color = line_colors[3]) +
  geom_line(aes(y=predict(model,df.Z_medium), group=ID, linetype ="m2"), size=1.5, alpha=0.6, color = line_colors[2]) +
  geom_line(aes(y=predict(model,df.Z_high), group=ID, linetype ="m3"), size=1.5, alpha=0.6, color = line_colors[1]) +
  scale_linetype_manual(values = c(m1 = "solid", m2 = "solid", m3 = "solid"),labels = c(m1 = "1", m2 = "2", m3 = "3")) +
  labs(color = "ID", linetype = expression(Z)) +
  guides(linetype = guide_legend(override.aes = list(color = line_colors)))

Plot_legend_2