timevis est un package pour faire des emplois du temps interactifs.
# install.packages("timevis")
library(timevis)
library(tidyverse)
library(lubridate)Il faut d’abord par créer un data frame avec les informations que l’on souhaite visualiser. Afin faciliter la lecture, nous allons d’abord créer des
arrivee <- ymd_hm("2020-08-24-14-00")
am <- ymd_hm("2020-08-25-08-30") + days(0:3)
pm <- ymd_hm("2020-08-25-14-00") + days(0:3)
pdej <- ymd_hm("2020-08-25-07-45") + days(0:3)
dejeuner <- ymd_hm("2020-08-25-12-30") + days(0:3)
diner <- ymd_hm("2020-08-24-19-00") + days(0:3)
h1 <- hours(1)
h2 <- hours(2)
h3 <- hours(3)
h4 <- hours(4)
m15 <- minutes(15)
m30 <- minutes(30)
m45 <- minutes(45)Le data.frame doit contenir les colonnes id (identifiant unique), content pour le texte à afficher sur l’événement, start et end pour les dates de début et de fin, et éventuellement group et type pour le groupe de l’événement et la façon dont il est affiché.
programmme <-
tribble(
~content, ~start, ~end, ~group, ~type,
"Arrivée", arrivee - m30, NA, "Di", "point",
"Choix des ateliers", arrivee, arrivee + h2, "Di", "range",
"GAM", arrivee + h2, arrivee + h4 + m45, "M", "range",
"Optim", arrivee + h2, arrivee + h4 + m45, "De", "range",
"ED", arrivee + h2, arrivee + h4 + m45, "M", "range",
"Restitutions", am[1], am[1] + h2 + m30, "Di", "range",
"Enseignement", am[1] + h2 + m30, am[1] + h3 + m45, "Co", "range",
"Widgets", am[1] + h2 + m30, am[1] + h3 + m45, "Co", "range",
"Enseignement", pm[1], pm[1] + h2, "Co", "range",
"Widgets", pm[1], pm[1] + h2, "Co", "range",
"Petit déjeuner", pdej[1], pdej[1] + m30, NA, "background",
"Petit déjeuner", pdej[2], pdej[2] + m30, NA, "background",
"Petit déjeuner", pdej[3], pdej[3] + m30, NA, "background",
"Petit déjeuner", pdej[4], pdej[4] + m30, NA, "background",
"Déjeuner", dejeuner[1], dejeuner[1] + h1 + m15 , NA, "background",
"Déjeuner", dejeuner[2], dejeuner[2] + h1 + m15 , NA, "background",
"Déjeuner", dejeuner[3], dejeuner[3] + h1 + m15 , NA, "background",
"Déjeuner", dejeuner[4], dejeuner[4] + h1 + m15 , NA, "background",
"Dîner", diner[1], diner[1] + hours(2), NA, "background",
"Dîner", diner[2], diner[2] + hours(2), NA, "background",
"Dîner", diner[3], diner[3] + hours(2), NA, "background",
"Dîner", diner[4], diner[4] + hours(2), NA, "background",
) %>%
mutate(id = 1:n()) %>%
dplyr::select(id, everything())
programmme## # A tibble: 22 x 6
## id content start end group type
## <int> <chr> <dttm> <dttm> <chr> <chr>
## 1 1 Arrivée 2020-08-24 13:30:00 NA Di point
## 2 2 Choix des ateliers 2020-08-24 14:00:00 2020-08-24 16:00:00 Di range
## 3 3 GAM 2020-08-24 16:00:00 2020-08-24 18:45:00 M range
## 4 4 Optim 2020-08-24 16:00:00 2020-08-24 18:45:00 De range
## 5 5 ED 2020-08-24 16:00:00 2020-08-24 18:45:00 M range
## 6 6 Restitutions 2020-08-25 08:30:00 2020-08-25 11:00:00 Di range
## 7 7 Enseignement 2020-08-25 11:00:00 2020-08-25 12:15:00 Co range
## 8 8 Widgets 2020-08-25 11:00:00 2020-08-25 12:15:00 Co range
## 9 9 Enseignement 2020-08-25 14:00:00 2020-08-25 16:00:00 Co range
## 10 10 Widgets 2020-08-25 14:00:00 2020-08-25 16:00:00 Co range
## # … with 12 more rows
Les groupes sont à préciser dans un data frame de correspondance.
groupes <- data.frame(
id = c("M", "De", "Co", "Di"),
content = c("Maths", "Developpement", "Communication", "Divers")
)La fonction timevis permet d’afficher le widget.
timevis(programmme, groups = groupes)