簡體   English   中英

如何使用不同的`geom_line`添加第二個圖例?

[英]How to add a second legend using different `geom_line`?

我正在繪制不同個體( ID )的兩個變量( XY )之間的關系。 這種關系通過真實值 ( geom_point ) 和代表不同個體線性混合效應模型 (LME) 的變量之間關系的預測的線顯示。 最重要的是,兩個變量和不同個體之間的線性關系是使用第二個定量預測變量 ( Z ) 的三個水平完成的。

因此,我所做的是使用geom_point()來顯示XY原始值之間的關系。 然后,我將三個geom_line()用於三個具有不同Z級別的 LME。 因此,每個geom_line()為固定Z的六個ID繪制六條線。 因此,由於我有 3 個Z級別並且我有 3 個geom_line() ,因此我有 18 行。

我試過這個(注意:代碼被簡化了):

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() + 
  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)))

在此處輸入圖片說明

但是,如您所見,三個geom_line()的圖例並不是我想要的。 我想顯示為標題Z而不是c("10th") 此外,三個geom_line()的圖例顏色與不同geom_line()的真實顏色不對應,有些線條是虛線。

有誰知道如何解決這個問題?

使用 Duck 的建議進行繪圖

在此處輸入圖片說明

試試這個方法。 由於沒有共享數據,我可以對其進行測試,但它可以在正確的路徑中尋址:

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

我最后使用了下一個代碼:

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

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM