show.legend = FALSE не работает, чтобы скрыть выбранный geom_, и текущие решения не работают - PullRequest
1 голос
/ 04 мая 2020

Я хочу удалить легенду для geom_path и оставить легенду для geom_points. Следуя другим ( 1 , 2 , 3 ), я попробовал подходы ниже, но безрезультатно. Любая помощь будет высоко ценится.

Моя попытка

library(ggplot2)    
p<-ggplot(pathDF ,aes(x=Age,y=Val,linetype=as.factor(variable))) + 
  geom_path(aes())+
  geom_path(show.legend = FALSE)+
  geom_point(data=pointsDF ,aes(x=Age,y=Income,colour=as.factor(Person)) 
             )+  
theme(legend.position = "right", legend.title = element_blank())
p

Мои данные

pathDF<-structure(list(X = c(19L, 108L, 197L, 20L, 109L, 198L, 21L, 110L, 
199L, 22L, 111L, 200L, 23L, 112L, 201L), Age = c(3.5, 3.5, 3.5, 
3.75, 3.75, 3.75, 4, 4, 4, 4.25, 4.25, 4.25, 4.5, 4.5, 4.5), 
    Age.1 = c(10.5, 10.5, 10.5, 11.25, 11.25, 11.25, 12, 12, 
    12, 12.75, 12.75, 12.75, 13.5, 13.5, 13.5), Var = structure(c(1L, 
    2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L), .Label = c("lower", 
    "median", "upper"), class = "factor"), Val = c(1.019776106, 
    1.080410605, 1.280680119, 1.019818423, 1.080376888, 1.28061562, 
    1.019850565, 1.080306376, 1.281109608, 1.019855427, 1.080300184, 
    1.281871082, 1.01988598, 1.080221459, 1.282087808)), class = "data.frame", row.names = c(NA, 
-15L))

pointsDF<-structure(list(X = 1:3, Person = structure(c(1L, 2L, 2L), .Label = c("F", 
"H"), class = "factor"), Age = c(10.5, 13.5, 13.5), Income = c(0.126696833, 
0, 0), Low = c(1.076305681, 1, 1), Up = c(1.224466569, 1.114847578, 
1.192670137), Var = c(0L, 0L, 0L), Val = c(0L, 0L, 0L)), class = "data.frame", row.names = c(NA, 
-3L))

1 Ответ

2 голосов
/ 04 мая 2020

У вас есть два geom_path; у вас должен быть один.

library(ggplot2)    
p<-ggplot(pathDF ,aes(x=Age,y=Val,linetype=as.factor(Var))) + 
    geom_path(show.legend = FALSE)+
    geom_point(data=pointsDF ,aes(x=Age,y=Income,colour=as.factor(Person)) 
    )+  
    theme(legend.position = "right", legend.title = element_blank())
p

enter image description here

...