Allez pour toi @harlock, une mini formation accélérée de ggplot !
# devtools::install_github("ATFutures/ical") # installer le package calendar, il n'est pas dans le CRAN
library(tidyverse)
library(calendar) # importer des fichier .ics (calendriers)
# import des données COVID
# source : "https://www.data.gouv.fr/fr/datasets/r/63352e38-d353-4b54-bfd1-f1b3ee1cabd7"
fichier <- "donnees-hospitalieres-covid19-2021-01-11-19h03.csv"
covid_974 <- read_csv2(fichier) %>% # importe (avec les dates comme il faut)
filter(dep == "974", sexe == 0) # sélectionne la RUN tout sexes confondus
# import des données des vacances scolaires à la Réunion
# source : "https://data.education.gouv.fr/explore/dataset/fr-en-calendrier-scolaire/download/?format=ics&disjunctive.description=true&disjunctive.location=true&disjunctive.zones=true&disjunctive.annee_scolaire=true&refine.location=R%C3%A9union&timezone=Europe/Paris&lang=fr"
vacances <- ic_read("fr-en-calendrier-scolaire.ics") %>%
filter(DTEND >= min(covid_974$jour), DTSTART <= max(covid_974$jour)) %>% # sélectionne les vacances correspondant aux dates du jeu de données covid_974
distinct(DTSTART, .keep_all = TRUE) # garde lignes avec des valeurs de DTSTART uniques (2 périodes se chevauchent - rentrée des profs vs. élèves)
# graphique
ggplot(covid_974) + # initialise le graphique
aes(x = jour, y = hosp) + # attribue un rôle aux variables de covid_974
geom_rect( # ajoute des rectangles bleus pour les vacances scolaires
data = vacances,
mapping = aes( # définit les rôles des variables du jeu de données vacances
xmin = as.Date(DTSTART), ymin = -Inf, # coins inférieurs gauches
xmax = as.Date(DTEND), ymax = Inf, # coins supérieurs droits
fill = "Vacances scolaires" # légende
),
inherit.aes = FALSE, # ne garde pas les rôles des variables de covid_974
alpha = 0.3
) +
geom_line(color = "darkgrey") + # ajoute la ligne grise avec les données brutes
geom_smooth( # ajoute la ligne rouge lissée
color = "red",
method = "loess",
formula = "y ~ x",
span = 0.05, # étendue du lissage
se = FALSE # pas de "ruban" de confiance
) +
scale_x_date( # modifie les paramètres par défaut de l'axe des x qui est de nature "date"
date_breaks = "month", # une graduation tous les mois
date_labels = "%b" # le label est le nom du mois en lettres abbrégé
) +
scale_fill_manual(values = "steelblue") + # choisi manuellement la couleur de remplissage
labs(
title = str_replace_all(fichier, pattern = "(-)|(.csv)", " "), # ajoute un titre (automatisé avec le nom du .csv)
x = NULL, # enlève le nom de l'axe x
y = "Nombre d'hospitalisations journalières", # modifie le nom de l'axe y
fill = NULL # enlève le titre de la légende pour le remplissage (fill)
) +
theme(legend.position = "bottom") # place la légence en bas du graphique
Je suis assez contente car j’ai réussi à automatiser pas mal de choses, notamment l’import des dates de vacances scolaires, le titre du graphique, la légende.
Ça donne ça :