1

I am plotting individual trajectories, and have also added lines for mean and median. I am unsure how to add a legend identifying these two lines and would be very grateful for advice on how to do this using ggplot2.

My data:

> dput(junk)
structure(list(Patient = c("TLA001", "TLA001", "TLA001", "TLA001", 
"TLA001", "TLA001", "TLA002", "TLA002", "TLA002", "TLA002", "TLA002", 
"TLA003", "TLA003", "TLA003", "TLA003", "TLA003", "TLA003", "TLA004", 
"TLA004", "TLA004", "TLA004", "TLA004", "TLA004", "TLA005", "TLA005", 
"TLA005", "TLA005", "TLA005", "TLA005", "TLA006", "TLA006", "TLA006", 
"TLA006", "TLA006", "TLA006", "TLA006", "TLA008", "TLA008", "TLA008", 
"TLA008", "TLA008", "TLA008", "TLA009", "TLA009", "TLA009", "TLA009", 
"TLA009", "TLA009", "TLA010", "TLA010", "TLA010", "TLA010", "TLA010", 
"TLA010", "TLA011", "TLA011", "TLA011", "TLA011", "TLA011", "TLA011", 
"TLA012", "TLA012", "TLA012", "TLA012", "TLA012", "TLA012", "TLA012", 
"TLA013", "TLA013", "TLA013", "TLA013", "TLA013", "TLA013", "TLA013", 
"TLA014", "TLA014", "TLA014", "TLA014", "TLA015", "TLA015", "TLA015", 
"TLA015", "TLA015", "TLA015"), Night = c("TLA -3", "TLA -2", 
"TLA -1", "TLA 1", "TLA 2", "TLA 3", "TLA -3", "TLA -2", "TLA -1", 
"TLA 1", "TLA 2", "TLA -3", "TLA -2", "TLA -1", "TLA 1", "TLA 2", 
"TLA 3", "TLA -3", "TLA -2", "TLA -1", "TLA 1", "TLA 2", "TLA 3", 
"TLA -3", "TLA -2", "TLA -1", "TLA 1", "TLA 2", "TLA 3", "TLA -3", 
"TLA -2", "TLA -1", "TLA 1", "TLA 2", "TLA 3", "TLA 4", "TLA -3", 
"TLA -2", "TLA -1", "TLA 1", "TLA 2", "TLA 3", "TLA -3", "TLA -2", 
"TLA -1", "TLA 1", "TLA 2", "TLA 3", "TLA -3", "TLA -2", "TLA -1", 
"TLA 1", "TLA 2", "TLA 3", "TLA -3", "TLA -2", "TLA -1", "TLA 1", 
"TLA 2", "TLA 3", "TLA -3", "TLA -2", "TLA -1", "TLA 1", "TLA 2", 
"TLA 3", "TLA 4", "TLA -3", "TLA -2", "TLA -1", "TLA 1", "TLA 2", 
"TLA 3", "TLA 4", "TLA -3", "TLA -2", "TLA -1", "TLA 1", "TLA -3", 
"TLA -2", "TLA -1", "TLA 1", "TLA 2", "TLA 3"), var = c(0.1, 
0, 0, 0, 0, 0, 0.5, 0, 0, 2.8, 0.2, 0.3, 0, 0.4, 0.3, 0, 2.2, 
1.1, 0.6, 2.1, 1.4, 1.7, 0.9, 0.3, 0.3, 0, 1, 0, 0.3, 0, 0, 0, 
0, 0, 0, 0, 0.1, 0.2, 0.1, 0.1, 0.4, 0, 0.4, 0.1, 0, 0, 0, 0, 
1.1, 0.8, 0, 0, 0.6, 0, 0, 0, 0, 0, 0, 0, 2, 0.9, 0.2, 0.4, 0.3, 
1, 0.9, 0, 0, 0, 0.3, 0.3, 0, 0, 1.2, 0.9, 0.6, 0.7, 0.7, 0, 
0, 0, 0, 0), SF_Cluster = c("Responder", "Responder", "Responder", 
"Responder", "Responder", "Responder", "Non-responder", "Non-responder", 
"Non-responder", "Non-responder", "Non-responder", "Responder", 
"Responder", "Responder", "Responder", "Responder", "Responder", 
"Responder", "Responder", "Responder", "Responder", "Responder", 
"Responder", "Responder", "Responder", "Responder", "Responder", 
"Responder", "Responder", "Non-responder", "Non-responder", "Non-responder", 
"Non-responder", "Non-responder", "Non-responder", "Non-responder", 
"Responder", "Responder", "Responder", "Responder", "Responder", 
"Responder", "Non-responder", "Non-responder", "Non-responder", 
"Non-responder", "Non-responder", "Non-responder", "Responder", 
"Responder", "Responder", "Responder", "Responder", "Responder", 
"Responder", "Responder", "Responder", "Responder", "Responder", 
"Responder", "Non-responder", "Non-responder", "Non-responder", 
"Non-responder", "Non-responder", "Non-responder", "Non-responder", 
"Responder", "Responder", "Responder", "Responder", "Responder", 
"Responder", "Responder", "Non-responder", "Non-responder", "Non-responder", 
"Non-responder", "Responder", "Responder", "Responder", "Responder", 
"Responder", "Responder")), row.names = c(NA, -84L), class = c("tbl_df", 
"tbl", "data.frame"), spec = structure(list(cols = list(Patient = structure(list(), class = c("collector_character", 
"collector")), Night = structure(list(), class = c("collector_character", 
"collector")), var = structure(list(), class = c("collector_double", 
"collector")), SF_Cluster = structure(list(), class = c("collector_character", 
"collector"))), default = structure(list(), class = c("collector_guess", 
"collector"))), class = "col_spec"))

Code for plot:

ggplot(data = junk, aes(x = Night, y=var, group=Patient, col=SF_Cluster)) + 
  geom_line(alpha=0.5) + 
  geom_smooth(size=0.2, se=F)+
  ggtitle("Number of vardput(junk)") + 
  xlab("Night")+
  ylab("N") + 
  geom_vline(xintercept = 4, linetype = "dotted", color = "blue", size = 1.5) + 
  stat_summary(fun.y = median, geom = "line", lwd = 1, aes(group = 1)) + 
  stat_summary(fun.y = mean, geom = "line", lwd = 1, aes(group = 1), 
               col = "red", linetype = "dotted", size = 2.5) 
Z.Lin
  • 28,055
  • 6
  • 54
  • 94
SK77
  • 61
  • 11
  • 5
    give a colour aes inside `stat_summar` : `aes(group = 1, colour = "Median")` (This will force legend). And than use custom colour scale to get your desired colour (if required: i.e. red for mean) – Jav Mar 18 '19 at 09:32
  • This worked brilliantly - thank you so much! – SK77 Mar 25 '19 at 08:45
  • Possible duplicate of [ggplot2 legend for stat\_summary](https://stackoverflow.com/questions/5178813/ggplot2-legend-for-stat-summary) – divibisan Apr 01 '19 at 16:39

0 Answers0