Line-type not matching legend in ggplot – General

I’m trying to plot two data.frames in a single plot, but for some reason the legend isn’t match my line-type that I’ve given it. Is there a more efficient way to do this?

library(dplyr)
library(ggplot2)
library(Rmisc)

black_line <- other %>%
  group_by(Month, Zone) %>% 
  dplyr::summarise(q1=quantile(freq, probs = 0.25, na.rm = TRUE), 
                   median=median(freq, na.rm = TRUE), 
                   mean=mean(freq, na.rm = TRUE),
                   q3=quantile(freq, probs = 0.75, na.rm = TRUE),
                   uci_freq = CI(freq)[1],
                   lci_freq = CI(freq)[3])

colors <- lines %>%
  group_by(CYR, Month, Zone) %>%
  dplyr::summarise(q1=quantile(freq, probs = 0.25, na.rm = TRUE), 
                   median=median(freq, na.rm = TRUE), 
                   mean=mean(freq, na.rm = TRUE),
                   q3=quantile(freq, probs = 0.75, na.rm = TRUE))

ggplot(data=black_line, aes(x=Month)) +  
  geom_ribbon(aes(ymin = lci_freq, ymax = uci_freq), fill="light grey",group=1) +
  geom_line(aes(y = mean, colour="mean"), linetype=2, group=1) +
  geom_line(data = colors, aes(x = Month, y = mean, colour = CYR, group = CYR), size = 0.9) + 
  scale_color_manual(labels = c("2006 (High)", "2014 (Low)", "2017", "2018", "2019", "Mean (Other Years)"), 
                     values=c('lime green','maroon','Purple','light sea green','dark orange', 'black'),
                     name="") + 
  scale_linetype_manual(values = c(rep("solid", 5), rep("dashed", 1))) + 
  facet_wrap(~factor(Zone,levels=c("West", "Whipray", "Rankin", "Crocodile")) ~ ., # Change order of Zones
             labeller=as_labeller(c("West" = "West",                               # Change name of facet_wraps
                                    "Whipray" = "Whipray", 
                                    "Rankin" = "Rankin", 
                                    "Crocodile" = "Crocodile Dragover*")),
             scales="free") + # x-axis to all plots
  scale_y_continuous(expand = c(0, 0), 
                     limits=c(0, 1), 
                     breaks=c(0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0)) + 
  theme_classic() + 
  theme(strip.text = element_text(face = "bold"), 
        legend.justification = "top", 
        strip.background = element_blank(),         # Removes text box around plot title
        axis.title.y = element_text(face="bold", margin = margin(t = 0, r = 10, b = 0, l = 0)),
        axis.title.x = element_text(face="bold", margin = margin(t = 10, r = 0, b = 0, l = 0))) + 
  ylab("Frequency of Occurence")

plot

2 data.frames attached:

> dput(colors)
structure(list(CYR = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L), levels = c("2006", 
"2014", "2017", "2018", "2019"), class = "factor"), Month = structure(c(2L, 
2L, 2L, 2L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 6L, 
6L, 6L, 6L, 7L, 7L, 7L, 7L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 
3L, 3L, 3L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 1L, 
1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 5L, 
5L, 5L, 5L, 6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L, 1L, 1L, 1L, 1L, 2L, 
2L, 2L, 2L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 6L, 
6L, 6L, 6L, 7L, 7L, 7L, 7L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 
3L, 3L, 3L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 7L, 
7L, 7L, 7L), levels = c("5", "6", "7", "8", "9", "10", "11"), class = "factor"), 
    Zone = c("Crocodile", "Rankin", "West", "Whipray", "Crocodile", 
    "Rankin", "West", "Whipray", "Crocodile", "Rankin", "West", 
    "Whipray", "Crocodile", "Rankin", "West", "Whipray", "Crocodile", 
    "Rankin", "West", "Whipray", "Crocodile", "Rankin", "West", 
    "Whipray", "Crocodile", "Rankin", "West", "Whipray", "Crocodile", 
    "Rankin", "West", "Whipray", "Crocodile", "Rankin", "West", 
    "Whipray", "Crocodile", "Rankin", "West", "Whipray", "Crocodile", 
    "Rankin", "West", "Whipray", "Crocodile", "Rankin", "West", 
    "Whipray", "Crocodile", "Rankin", "West", "Whipray", "Crocodile", 
    "Rankin", "West", "Whipray", "Crocodile", "Rankin", "West", 
    "Whipray", "Crocodile", "Rankin", "West", "Whipray", "Crocodile", 
    "Rankin", "West", "Whipray", "Crocodile", "Rankin", "West", 
    "Whipray", "Crocodile", "Rankin", "West", "Whipray", "Crocodile", 
    "Rankin", "West", "Whipray", "Crocodile", "Rankin", "West", 
    "Whipray", "Crocodile", "Rankin", "West", "Whipray", "Crocodile", 
    "Rankin", "West", "Whipray", "Crocodile", "Rankin", "West", 
    "Whipray", "Crocodile", "Rankin", "West", "Whipray", "Crocodile", 
    "Rankin", "West", "Whipray", "Crocodile", "Rankin", "West", 
    "Whipray", "Crocodile", "Rankin", "West", "Whipray", "Crocodile", 
    "Rankin", "West", "Whipray", "Crocodile", "Rankin", "West", 
    "Whipray", "Crocodile", "Rankin", "West", "Whipray", "Crocodile", 
    "Rankin", "West", "Whipray", "Crocodile", "Rankin", "West", 
    "Whipray"), q1 = c(`25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, 
    `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, 
    `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0.25, 
    `25%` = 1, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, 
    `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, 
    `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, 
    `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, 
    `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, 
    `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, 
    `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, 
    `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, 
    `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, 
    `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, 
    `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, 
    `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, 
    `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, 
    `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, 
    `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, 
    `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, 
    `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, 
    `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, 
    `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, 
    `25%` = 0, `25%` = 0, `25%` = 0), median = c(0, 0, 0, 0, 
    0, 0, 0.5, 0.5, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), mean = c(0, 
    0.0714285714285714, 0.461538461538462, 0.2, 0.1, 0.0714285714285714, 
    0.5, 0.5, 0, 0.357142857142857, 0.346153846153846, 0.6, 0.1, 
    0.214285714285714, 0.730769230769231, 0.8, 0, 0.357142857142857, 
    0.461538461538462, 0.6, 0.1, 0.285714285714286, 0.192307692307692, 
    0.3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.05, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0.0526315789473684, 0, 0.0454545454545455, 
    0.05, 0, 0, 0.136363636363636, 0.25, 0, 0, 0, 0.35, 0, 0, 
    0.227272727272727, 0.25, 0, 0, 0.166666666666667, 0.421052631578947, 
    0, 0, 0.227272727272727, 0.333333333333333, 0.157894736842105, 
    0.15, 0.272727272727273, 0.2, 0.157894736842105, 0, 0.0454545454545455, 
    0.1, 0.0526315789473684, 0, 0.136363636363636, 0.15, 0, 0.05, 
    0.0454545454545455, 0.25, 0.105263157894737, 0.05, 0.227272727272727, 
    0.25, 0.111111111111111, 0.15, 0.227272727272727, 0.363636363636364, 
    0.368421052631579, 0.1, 0.545454545454545, 0.3, 0.473684210526316, 
    0.1, 0.318181818181818, 0.15, 0.210526315789474, 0, 0.227272727272727, 
    0.05, 0, 0, 0.227272727272727, 0.2, 0.105263157894737, 0, 
    0.318181818181818, 0.25, 0, 0, 0.227272727272727, 0.25, 0.105263157894737, 
    0, 0.272727272727273, 0.25, 0.157894736842105, 0, 0.454545454545455, 
    0.35, 0.315789473684211, 0, 0.272727272727273, 0.35, 0.0526315789473684
    ), q3 = c(`75%` = 0, `75%` = 0, `75%` = 1, `75%` = 0, `75%` = 0, 
    `75%` = 0, `75%` = 1, `75%` = 1, `75%` = 0, `75%` = 1, `75%` = 1, 
    `75%` = 1, `75%` = 0, `75%` = 0, `75%` = 1, `75%` = 1, `75%` = 0, 
    `75%` = 1, `75%` = 1, `75%` = 1, `75%` = 0, `75%` = 0.75, 
    `75%` = 0, `75%` = 0.75, `75%` = 0, `75%` = 0, `75%` = 0, 
    `75%` = 0, `75%` = 0, `75%` = 0, `75%` = 0, `75%` = 0, `75%` = 0, 
    `75%` = 0, `75%` = 0, `75%` = 0, `75%` = 0, `75%` = 0, `75%` = 0, 
    `75%` = 0, `75%` = 0, `75%` = 0, `75%` = 0, `75%` = 0, `75%` = 0, 
    `75%` = 0, `75%` = 0, `75%` = 0, `75%` = 0, `75%` = 0, `75%` = 0, 
    `75%` = 0, `75%` = 0, `75%` = 0, `75%` = 0.25, `75%` = 0, 
    `75%` = 0, `75%` = 0, `75%` = 1, `75%` = 0, `75%` = 0, `75%` = 0, 
    `75%` = 0.25, `75%` = 0, `75%` = 0, `75%` = 0, `75%` = 1, 
    `75%` = 0, `75%` = 0, `75%` = 0, `75%` = 1, `75%` = 0, `75%` = 0, 
    `75%` = 0.75, `75%` = 0, `75%` = 0, `75%` = 0, `75%` = 0, 
    `75%` = 0, `75%` = 0, `75%` = 0, `75%` = 0, `75%` = 0, `75%` = 0, 
    `75%` = 0, `75%` = 0, `75%` = 0.25, `75%` = 0, `75%` = 0, 
    `75%` = 0, `75%` = 0.25, `75%` = 0, `75%` = 0, `75%` = 0, 
    `75%` = 1, `75%` = 1, `75%` = 0, `75%` = 1, `75%` = 1, `75%` = 1, 
    `75%` = 0, `75%` = 1, `75%` = 0, `75%` = 0, `75%` = 0, `75%` = 0, 
    `75%` = 0, `75%` = 0, `75%` = 0, `75%` = 0, `75%` = 0, `75%` = 0, 
    `75%` = 0, `75%` = 1, `75%` = 0.25, `75%` = 0, `75%` = 0, 
    `75%` = 0, `75%` = 0.25, `75%` = 0, `75%` = 0, `75%` = 0.75, 
    `75%` = 0.25, `75%` = 0, `75%` = 0, `75%` = 1, `75%` = 1, 
    `75%` = 1, `75%` = 0, `75%` = 0.75, `75%` = 1, `75%` = 0)), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -132L), groups = structure(list(
    CYR = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 
    2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 
    4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L), levels = c("2006", "2014", 
    "2017", "2018", "2019"), class = "factor"), Month = structure(c(2L, 
    3L, 4L, 5L, 6L, 7L, 1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 
    5L, 6L, 7L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 1L, 2L, 3L, 4L, 5L, 
    6L, 7L), levels = c("5", "6", "7", "8", "9", "10", "11"), class = "factor"), 
    .rows = structure(list(1:4, 5:8, 9:12, 13:16, 17:20, 21:24, 
        25:28, 29:32, 33:36, 37:40, 41:44, 45:48, 49:52, 53:56, 
        57:60, 61:64, 65:68, 69:72, 73:76, 77:80, 81:84, 85:88, 
        89:92, 93:96, 97:100, 101:104, 105:108, 109:112, 113:116, 
        117:120, 121:124, 125:128, 129:132), ptype = integer(0), class = c("vctrs_list_of", 
    "vctrs_vctr", "list"))), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -33L), .drop = TRUE))

> dput(black_line)
structure(list(Month = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 
2L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 
6L, 7L, 7L, 7L, 7L), levels = c("5", "6", "7", "8", "9", "10", 
"11"), class = "factor"), Zone = c("Crocodile", "Rankin", "West", 
"Whipray", "Crocodile", "Rankin", "West", "Whipray", "Crocodile", 
"Rankin", "West", "Whipray", "Crocodile", "Rankin", "West", "Whipray", 
"Crocodile", "Rankin", "West", "Whipray", "Crocodile", "Rankin", 
"West", "Whipray", "Crocodile", "Rankin", "West", "Whipray"), 
    q1 = c(`25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, 
    `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, 
    `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, 
    `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, 
    `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0, `25%` = 0), median = c(0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0), mean = c(0, 0.106060606060606, 0.0666666666666667, 
    0.0175438596491228, 0, 0.166666666666667, 0.2, 0.0350877192982456, 
    0.0166666666666667, 0.121212121212121, 0.283333333333333, 
    0.0350877192982456, 0.0166666666666667, 0.227272727272727, 
    0.25, 0.0714285714285714, 0.05, 0.225806451612903, 0.344262295081967, 
    0.181818181818182, 0.0333333333333333, 0.409090909090909, 
    0.327868852459016, 0.315789473684211, 0.0833333333333333, 
    0.287878787878788, 0.233333333333333, 0.140350877192982), 
    q3 = c(`75%` = 0, `75%` = 0, `75%` = 0, `75%` = 0, `75%` = 0, 
    `75%` = 0, `75%` = 0, `75%` = 0, `75%` = 0, `75%` = 0, `75%` = 1, 
    `75%` = 0, `75%` = 0, `75%` = 0, `75%` = 0.25, `75%` = 0, 
    `75%` = 0, `75%` = 0, `75%` = 1, `75%` = 0, `75%` = 0, `75%` = 1, 
    `75%` = 1, `75%` = 1, `75%` = 0, `75%` = 1, `75%` = 0, `75%` = 0
    ), uci_freq = c(upper = 0, upper = 0.182335650126033, upper = 0.131648631450605, 
    upper = 0.0526884336639978, upper = NA, upper = 0.258984399139491, 
    upper = 0.304202963660389, upper = 0.0843438862608657, upper = 0.0500165896348044, 
    upper = 0.202059590802751, upper = 0.400722364352095, upper = 0.0843438862608657, 
    upper = 0.0500165896348044, upper = 0.331082480573536, upper = 0.362803017099405, 
    upper = 0.141022237982053, upper = 0.106776273526635, upper = 0.332853890196155, 
    upper = 0.466957854450614, upper = 0.287047054248007, upper = 0.0800958443919204, 
    upper = 0.530883712461989, upper = 0.449094950922079, upper = 0.440221687017866, 
    upper = 0.155333777605115, upper = 0.400037540553448, upper = 0.343515615362458, 
    upper = 0.233334679969644), lci_freq = c(lower = 0, lower = 0.0297855619951795, 
    lower = 0.00168470188272793, lower = -0.0176007143657521, 
    lower = NA, lower = 0.0743489341938427, lower = 0.0957970363396107, 
    lower = -0.0141684476643745, lower = -0.0166832563014711, 
    lower = 0.0403646516214918, lower = 0.165944302314571, lower = -0.0141684476643745, 
    lower = -0.0166832563014711, lower = 0.123462973971918, lower = 0.137196982900595, 
    lower = 0.00183490487509033, lower = -0.00677627352663479, 
    lower = 0.118759013029651, lower = 0.22156673571332, lower = 0.0765893093883564, 
    lower = -0.0134291777252537, lower = 0.287298105719829, lower = 0.206642753995954, 
    lower = 0.191357260350555, lower = 0.011332889061552, lower = 0.175720035204128, 
    lower = 0.123151051304209, lower = 0.0473670744163205), col = c("mean", 
    "mean", "mean", "mean", "mean", "mean", "mean", "mean", "mean", 
    "mean", "mean", "mean", "mean", "mean", "mean", "mean", "mean", 
    "mean", "mean", "mean", "mean", "mean", "mean", "mean", "mean", 
    "mean", "mean", "mean")), row.names = c(NA, -28L), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"), groups = structure(list(Month = structure(1:7, levels = c("5", 
"6", "7", "8", "9", "10", "11"), class = "factor"), .rows = structure(list(
    1:4, 5:8, 9:12, 13:16, 17:20, 21:24, 25:28), ptype = integer(0), class = c("vctrs_list_of", 
"vctrs_vctr", "list"))), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -7L), .drop = TRUE))

Read more here: Source link