Показать легенду geom_line со многими командами geom на одном графике

#r #ggplot2 #legend

#r #ggplot2 #легенда

Вопрос:

Привет всем, я представляю 2 переменные (текущие и кумулятивные) сгруппированного набора данных на одном графике. Набор данных выглядит следующим образом:

 > structure(Dt)
   Group Year  Temperature  Cum_Temp
1     H1 2012 11.4487927 11.448793
2     H1 2013  4.5795171 15.903414
3     H1 2014  8.9508743 22.772689
...
10    H2 2012  6.8571429  6.857143
11    H2 2013  1.1428571  8.000000
12    H2 2014  3.4285714  9.714286
...
19   UTC 2012  5.9163059  5.916306
20   UTC 2013  6.3492063  9.956710
21   UTC 2014 16.3059163 19.769120
...
  

Я создал цветовой вектор:

plt_col<-rep(c("Blue","Yellow","Red"),each=9)

и я создал график:

 ggplot(Dt, aes(x=Year))  
  geom_line(aes(y=Temperature, group=Group),linetype = "solid", color = plt_col, size=1.5) 
  geom_point(aes(y=Temperature, group=Group),shape = 16, color = plt_col, size=3) 
  geom_line(aes(y=Cum_Temp, group=Group),linetype = "longdash", color = plt_col, size=0.8) 
  geom_point(aes(y=Cum_Temp, group=Group),shape = 16, color = plt_col, size=3)
  

Мне нужно показать легенду как сплошными, так и пунктирными линиями, но со многими geom_x я не могу.

У вас есть какие-либо предложения?

Спасибо

Ответ №1:

Вы собираетесь строить это неправильно. Попробуйте:

 library(dplyr)
library(tidyr)
library(ggplot2)

pivot_longer(Dt, 3:4) %>%
  ggplot(aes(x = Year, y = value, colour = Group))  
  geom_line(aes(linetype = name, size = name))  
  geom_point(shape = 16, size = 3)  
  scale_color_manual(values = c("blue", "yellow", "red"))  
  scale_linetype_manual(values = c("longdash", "solid"), name = "")  
  scale_size_manual(values = c(0.8, 1.5), name = "")
  

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