Un diagramme de GANTT est un outil graphique idéal pour réaliser la gestion d'un projet, planifier le déroulement des étapes à l'avance.
Il est possible de réaliser un diagramme de GANTT avec le logiciel R grâce à différentes librairies comme plan ou DiagrammeR.
L'esssentiel de cette page !
La commande mermaid() de la librairie DiagrammeR réalise très facilement de supers diagrammes de GANTT.
install.packages("DiagrammeR")
library(DiagrammeR)
Il suffit de modifier ce texte. On donne un titre aux sections, aux étapes. On précise si une étape commence à une date donnée, après une autre étape. On indique les durées ou les dates de fin.
crit : met en rouge les étapes critiques - done : les étapes déjà réalisées et active : celles à faire déjà ouvertes...
?mermaid pour en savoir plus.
mermaid("
gantt
dateFormat YYYY-MM-DD
title Diagramme de GANTT d'un projet QSE
section Prise en main
Engagement de la direction :crit,done, p_en_main_1, 2018-09-01, 2018-09-08
Description de la ferme :done, p_en_main_2, 2018-09-08, 3w
Rédaction de la gestion documentaire :done, gestion_doc, 2018-09-06, 10d
Rédaction des procédures :active, p_en_main_4, after gestion_doc, 30d
section Analyses des problèmes et causes
Lister les problème :active, pb_1, 2018-10-06, 24h
Identifier les causes :active, pb_2, after pb_1, 1w
Sélectionner les causes :active, pb_3, after pb_2, 1w
Construire les graphiques :active, pb_4, after pb_3, 1w
section Mise en place des Solutions
Rédaction :active, fin_1, after pb_3, 3d
Application :active, fin_2, after fin_1, 1w
Rédaction du diaporama :crit, fin_3, after fin_2, 48h
")
Une aide à la résolution de problèmes est disponible en bas de page.
install.packages("plan")
library(plan)
# Etape 1 - réaliser deux listes : une pour les débuts de chaque étape, une pour les fins
débuts= as.POSIXct(c("2015-01-27","2015-01-28","2015-01-31","2015-02-03","2015-02-05","2015-02-12","2015-02-13"))
fins = as.POSIXct(c("2015-01-30","2015-02-03","2015-02-07","2015-02-05","2015-02-12","2015-02-13","2015-02-14"))
# Étape 1 - autre méthode : on peut aussi définir la début de chaque étape en général et la durée de chaque étape
départ = as.POSIXct("2015-01-27")
# on peut ainsi calculer les dates par rapport à une date de départ (ex : l'étape 2 commence 1 jour après le début, l'étape 3, 4 jours)
# ces durées en jours doivent être additionnées à la date de départ
débuts = c(0,1,4,7,9,16,17) ; durée = c(3,6,7,2,7,1,1) # durée en jours ; fins = débuts+durée
fins = débuts+durée
fins=fins*86400+départ # (86400 permet de convertir les dates exprimées ici en jours en secondes (86400 secondes/jour))
débuts=débuts*86400+départ
# Etape 2 - Désigner un nom pour chaque action (chaque étape)
étapes = c("Rédaction","Relecture","Illustration","Contrôle","Correction","Publication","Reliure")
# Etape 3 - Optionnels (autres informations)
accomplissement = c(100,75,50,0,0,0,0) # Précise le pourcentage d'avancée de chaque étape (optionnel)
liens = c(NA,5,NA,NA,NA,NA,NA) # Précise si une étape doit nécessairement précéder une autre
# (ex : l'étape 2 ici doit impérativement précéder l'étape 5)
mon_gantt <- as.gantt(
key=1:7, # numérotation des étapes
étapes, # noms des étapes
débuts, # dates de début
fins, # dates de fin
done=accomplissement, # optionnel - précise le degré d'accomplissement de chaque étape
neededBy = liens # optionnel - précise la dépendance de certaines étapes vis-à-vis d'autres
)
summary(mon_gantt ) # affiche un bilan du gantt nommé ici mon_gantt
évenements_ponctuels <- c("Réunion 1", "Réunion 2") # événements ponctuels (leurs noms)
évenements_ponctuels_dates <- c("2015-02-03", "2015-02-10") # événements ponctuels (leurs dates)
6- Tracer le diagramme de GANTT (pour aller plus loin sur les formats de temps)
# EXEMPLE NON MIS EN FORME EN UTILISANT LA METHODE 1 (ETAPE 1 ci-dessus)
plot(mon_gantt)
##################
# EXEMPLE MIS EN FORME EN UTILISANT LA METHODE 2 (ETAPE 1 ci-dessus)
plot(mon_gantt,
xlim=c(départ, max(fins)),
col.notdone="orange", # couleur des barres, des étapes
col.done = "black", # couleur des barres pour les parties déjà réalisées
grid.col = "red", # couleurs de la grille, du cadrillage
grid.lty = 3, # type de trait du cadrillage
time.lines.by="1 day", # densité du cadrillage (1 day, 2 days, 1 week, 2 weeks, 1 month, 2 months)
time.format = "%a%d-%m", # format du temps : ici nom de jour et date jour-mois - pour changer de format
time.labels.by="1 day", # indique une graduation par jour sur l'axe des abscisses
las=1, # orientation des étiquettes de l'axe des abscisses
event.label=évenements_ponctuels, # liste des événements ponctuels
event.time=évenements_ponctuels_dates, # dates des événements ponctuels
col.connector = "blue" # couleurs des événements ponctuels
)
Aller plus loin...
Aller encore plus loin...