I'm very new to R and ggplot and totally self-taught. I'm trying to recreate a chart that appears on a UK government Coronavirus website.
I can't seem to get ggplot to create a legend at all. I want the legend to show 3 things: (grey) Most recent 5 days (incomplete), (steelblue) Number of cases, and (blue line) Cases (7 day average).
I'm confident that I can make the axis look nice, format the dates, etc, I've just been struggling to do the legend.
Thanks for looking.
# Libraries
library(tidyverse)
#Data
England_Rates <- read.csv("https://api.coronavirus.data.gov.uk/v2/data?areaType=nation&areaCode=E92000001&metric=newCasesBySpecimenDate&format=csv")
England_Rates$AveragenewCasesBySpecimenDate <- rollapply(England_Rates$newCasesBySpecimenDate, 7, mean, align = "right", fill=NA)
England_Rates$data_colour <- "steelblue"
England_Rates$data_colour[1] <- NA
England_Rates$data_colour[2] <- "grey"
England_Rates$data_colour[3] <- "grey"
England_Rates$data_colour[4] <- "grey"
England_Rates$data_colour[5] <- "grey"
England_Rates$data_colour[6] <- "grey"
ggplot() +
  geom_col(aes(x = England_Rates$date, y = England_Rates$newCasesBySpecimenDate),colour=England_Rates$data_colour) +
  geom_line(aes(x = England_Rates$date, y = England_Rates$AveragenewCasesBySpecimenDate), size=1.2, colour="blue", group=1)
https://coronavirus.data.gov.uk/details/cases
WORKING CODE
library(tidyverse)
#Data
England_Rates <- read.csv("https://api.coronavirus.data.gov.uk/v2/data?areaType=nation&areaCode=E92000001&metric=newCasesBySpecimenDate&format=csv")
England_Rates$AveragenewCasesBySpecimenDate <- rollapply(England_Rates$newCasesBySpecimenDate, 7, mean, align = "right", fill=NA)
England_Rates$data_colour <- "Number of cases"
England_Rates$data_colour[1] <- NA
England_Rates$data_colour[2] <- "Most recent 5 days (incomplete)"
England_Rates$data_colour[3] <- "Most recent 5 days (incomplete)"
England_Rates$data_colour[4] <- "Most recent 5 days (incomplete)"
England_Rates$data_colour[5] <- "Most recent 5 days (incomplete)"
England_Rates$data_colour[6] <- "Most recent 5 days (incomplete)"
data <- data.frame (Date = as.Date(England_Rates_3$date),
                    Cases = England_Rates$newCasesBySpecimenDate.x,
                    "Cases (7-day Average)" = England_Rates$AveragenewCasesBySpecimenDate,
                    BlueorGrey = England_Rates$data_type)
group.colors <- c("Number of cases" = "#5694ca", "Most recent 5 days (incomplete)"="dark grey","Cases 7 day (Average)"="dark blue" )
ggplot(data,
       aes(x=Date, y=Cases, fill=BlueorGrey))+
  theme(
    text = element_text(color = "black"),
    axis.text=element_text(colour="black"),
    panel.background = element_rect(fill = "white",
                                    colour = "white",
                                    size = 0.5, linetype = "solid"),
    panel.grid.major = element_line(size = 0.5, linetype = 'twodash',
                                    colour = "light grey"), 
    panel.grid.minor = element_line(size = 0.25, linetype = 'twodash',
                                    colour = "light grey"),
    legend.title = element_blank(),
    legend.position = "bottom",
    legend.box = "vertical",
    axis.title=element_blank())+
  geom_bar(stat = "identity", width=1) + 
  scale_fill_manual(values=group.colors) +
  geom_line(aes(y=Cases..7.day.Average., fill="Cases 7 day (Average)"), colour="dark blue", size=0.8)
 
    
