Добавить легенду в линию ggplot2 с точечным сюжетом - PullRequest
0 голосов
/ 14 января 2019

У меня есть вопрос о легендах в ggplot2. Мне удалось нарисовать две линии и две точки на одном графике и хочу добавить легенду с двумя используемыми цветами. Это код, используемый

P <- ggplot() + geom_point(data = data_p,aes(x = V1,y = V2),shape = 0,col = "#56B4E9") + geom_line(data = data_p,aes(x = V1,y = V2),col = "#56B4E9")+geom_point(data = data_p,aes(x = V1,y = V3),shape = 1,col = "#009E73") + geom_line(data = data_p,aes(x = V1,y = V3),col = "#009E73")

и вывод введите описание изображения здесь

Я пытаюсь использовать scale_color_manual и scale_shape_manual и scale_line_manual, но они не работают.

P + scale_color_manual(name = "group",values = c('#56B4E9' = '#56B4E9','#009E73' = '#009E73'),
                   breaks = c('#56B4E9','#009E73'),labels = c('B','H')) +

Я хочу вот так

Вот простые данные, если они могут вам помочь.

5   0.49216 0.45148  
10  0.3913  0.35751  
15  0.32835 0.30361

data_p

1 Ответ

0 голосов
/ 14 января 2019

Я бы подошел к этой проблеме в два этапа.

Как правило, чтобы получить информацию в руководствах, ggplot2 хочет, чтобы вы поместили «эстетику», подобную цвету, в функцию aes (). Обычно я делаю это внутри ggplot (), а не индивидуально для каждого "geom", особенно если все имеет смысл в одном кадре данных.

Моим первым шагом было бы немного переделать ваш фрейм данных. Я бы использовал пакет tidyr (часть tidyverse, например ggplot2, который действительно хорош для переформатирования данных и стоит учиться по ходу работы), и сделал бы что-то подобное

#key is the new variable that will be your color variable
#value is the numbers that had been in V2 and V3 that will now be your y-values
data_p %>% tidyr::gather (key = "color", value = "yval", V2, V3) 

#now, I would rewrite your plot slightly
P<-(newdf %>% ggplot(aes(x=V1,y=yval, colour=color))

#when you put the ggplot inside parentheses, 
#you can add each new layer on its own line, starting with the "+"
                 + geom_point()
                 + geom_line()
                 + scale_color_manual(values=c("#56B4E9","#009E73"))

#theme classic is my preferred look in ggplot, usually
                 + theme_classic()
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...