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("ganttdateFormat YYYY-MM-DDtitle Diagramme de GANTT d'un projet QSEsection Prise en mainEngagement de la direction :crit,done, p_en_main_1, 2018-09-01, 2018-09-08Description de la ferme :done, p_en_main_2, 2018-09-08, 3wRédaction de la gestion documentaire :done, gestion_doc, 2018-09-06, 10dRédaction des procédures :active, p_en_main_4, after gestion_doc, 30dsection Analyses des problèmes et causesLister les problème :active, pb_1, 2018-10-06, 24hIdentifier les causes :active, pb_2, after pb_1, 1wSélectionner les causes :active, pb_3, after pb_2, 1wConstruire les graphiques :active, pb_4, after pb_3, 1wsection Mise en place des SolutionsRédaction :active, fin_1, after pb_3, 3dApplication :active, fin_2, after fin_1, 1wRé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 finsdé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 étapedé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épartdé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éefins = débuts+duréefins=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 étapesdébuts, # dates de débutfins, # dates de findone=accomplissement, # optionnel - précise le degré d'accomplissement de chaque étapeneededBy = 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éesgrid.col = "red", # couleurs de la grille, du cadrillagegrid.lty = 3, # type de trait du cadrillagetime.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 formattime.labels.by="1 day", # indique une graduation par jour sur l'axe des abscisseslas=1, # orientation des étiquettes de l'axe des abscissesevent.label=évenements_ponctuels, # liste des événements ponctuelsevent.time=évenements_ponctuels_dates, # dates des événements ponctuelscol.connector = "blue" # couleurs des événements ponctuels)Aller plus loin...
Aller encore plus loin...