Quelqu'un a-t-il utilisé R pour créer un diagramme de Gantt ?
PS je pourrais vivre sans les flèches de dépendance.
la source
Quelqu'un a-t-il utilisé R pour créer un diagramme de Gantt ?
PS je pourrais vivre sans les flèches de dépendance.
Il existe maintenant quelques méthodes élégantes pour générer un diagramme de Gantt dans R.
Utiliser Candela
library(candela)
data <- list(
list(name='Do this', level=1, start=0, end=5),
list(name='This part 1', level=2, start=0, end=3),
list(name='This part 2', level=2, start=3, end=5),
list(name='Then that', level=1, start=5, end=15),
list(name='That part 1', level=2, start=5, end=10),
list(name='That part 2', level=2, start=10, end=15))
candela('GanttChart',
data=data, label='name',
start='start', end='end', level='level',
width=700, height=200)
Utilisation de DiagrammeR
library(DiagrammeR)
mermaid("
gantt
dateFormat YYYY-MM-DD
title A Very Nice Gantt Diagram
section Basic Tasks
This is completed :done, first_1, 2014-01-06, 2014-01-08
This is active :active, first_2, 2014-01-09, 3d
Do this later : first_3, after first_2, 5d
Do this after that : first_4, after first_3, 5d
section Important Things
Completed, critical task :crit, done, import_1, 2014-01-06,24h
Also done, also critical :crit, done, import_2, after import_1, 2d
Doing this important task now :crit, active, import_3, after import_2, 3d
Next critical task :crit, import_4, after import_3, 5d
section The Extras
First extras :active, extras_1, after import_4, 3d
Second helping : extras_2, after extras_1, 20h
More of the extras : extras_3, after extras_1, 48h
")
Trouvez cet exemple et bien d'autres sur DiagrammeR
GitHub
Si vos données sont stockées dans un data.frame
, vous pouvez créer la chaîne à transmettre mermaid()
en la convertissant au format approprié.
Considérer ce qui suit:
df <- data.frame(task = c("task1", "task2", "task3"),
status = c("done", "active", "crit"),
pos = c("first_1", "first_2", "first_3"),
start = c("2014-01-06", "2014-01-09", "after first_2"),
end = c("2014-01-08", "3d", "5d"))
# task status pos start end
#1 task1 done first_1 2014-01-06 2014-01-08
#2 task2 active first_2 2014-01-09 3d
#3 task3 crit first_3 after first_2 5d
Utilisation dplyr
et tidyr
(ou l'une de vos ressources de gestion de données préférées):
library(tidyr)
library(dplyr)
mermaid(
paste0(
# mermaid "header", each component separated with "\n" (line break)
"gantt", "\n",
"dateFormat YYYY-MM-DD", "\n",
"title A Very Nice Gantt Diagram", "\n",
# unite the first two columns (task & status) and separate them with ":"
# then, unite the other columns and separate them with ","
# this will create the required mermaid "body"
paste(df %>%
unite(i, task, status, sep = ":") %>%
unite(j, i, pos, start, end, sep = ",") %>%
.$j,
collapse = "\n"
), "\n"
)
)
Comme mentionné par @GeorgeDontas dans les commentaires, il existe un petit hack qui pourrait permettre de changer les étiquettes de l'axe x en dates au lieu de 'w.01, w.02'.
En supposant que vous ayez enregistré le graphique de sirène ci-dessus m
, faites:
m$x$config = list(ganttConfig = list(
axisFormatter = list(list(
"%b %d, %Y"
,htmlwidgets::JS(
'function(d){ return d.getDay() == 1 }'
)
))
))
Qui donne:
Utilisation de timevis
Depuis le timevis
GitHub :
timevis
vous permet de créer des visualisations de chronologie riches et entièrement interactives dans R. Les chronologies peuvent être incluses dans des applications Shiny et des documents de démarquage R, ou affichées à partir de la console R et de RStudio Viewer.
library(timevis)
data <- data.frame(
id = 1:4,
content = c("Item one" , "Item two" ,"Ranged item", "Item four"),
start = c("2016-01-10", "2016-01-11", "2016-01-20", "2016-02-14 15:00:00"),
end = c(NA , NA, "2016-02-04", NA)
)
timevis(data)
Qui donne:
Utilisation intrigue
Je suis tombé sur ce post fournissant une autre méthode utilisant plotly
. Voici un exemple:
library(plotly)
df <- read.csv("https://cdn.rawgit.com/plotly/datasets/master/GanttChart-updated.csv",
stringsAsFactors = F)
df$Start <- as.Date(df$Start, format = "%m/%d/%Y")
client <- "Sample Client"
cols <- RColorBrewer::brewer.pal(length(unique(df$Resource)), name = "Set3")
df$color <- factor(df$Resource, labels = cols)
p <- plot_ly()
for(i in 1:(nrow(df) - 1)){
p <- add_trace(p,
x = c(df$Start[i], df$Start[i] + df$Duration[i]),
y = c(i, i),
mode = "lines",
line = list(color = df$color[i], width = 20),
showlegend = F,
hoverinfo = "text",
text = paste("Task: ", df$Task[i], "<br>",
"Duration: ", df$Duration[i], "days<br>",
"Resource: ", df$Resource[i]),
evaluate = T
)
}
p
Qui donne:
Vous pouvez ensuite ajouter des informations et des annotations supplémentaires, personnaliser les polices et les couleurs, etc. (voir l'article de blog pour plus de détails)
timevis
enR
semble cool et simple. :-)Un simple
ggplot2
diagramme de Gantt.Tout d'abord, nous créons des données.
Maintenant, dessinez l'intrigue.
la source
Pensez à utiliser le package
projmanr
(version 0.1.0 publiée sur CRAN le 23 août 2017).taskdata1
:Maintenant, commencez à préparer gantt:
la source
Essaye ça:
la source
Le package
plan
prend en charge la création de diagrammes de burndown et de diagrammes de Gantt et contient uneplot.gantt
fonction. Voir cette page du manuel graphique RDécouvrez également comment en créer un dans R en utilisant les diagrammes de GANTT de l'API R de Plotly dans R en utilisant PLOTLY .
la source
Vous pouvez le faire avec le package GoogleVis :
Source: https://cran.r-project.org/web/packages/googleVis/vignettes/googleVis_examples.html
la source
J'ai utilisé et modifié l'exemple ci-dessus de Richie, travaillé comme un charme. Version modifiée pour montrer comment son modèle pourrait se traduire par l'ingestion de données CSV plutôt que par des éléments de texte fournis manuellement.
NOTE : La réponse de Richie manque indique que 2 paquets ( reshape et ggplot2 ) sont nécessaires pour le haut / bas du code au travail.
la source
Voici un article que j'ai écrit sur l'utilisation de ggplot pour générer quelque chose comme un diagramme de Gantt. Pas très sophistiqué, mais pourrait vous donner des idées.
la source
Pour moi, Gvistimeline était le meilleur outil pour ce faire, mais sa connexion en ligne requise ne m'était pas utile. Ainsi j'ai créé un package appelé
vistime
qui utiliseplotly
(similaire à la réponse de @Steven Beaupré), donc vous pouvez zoomer etc.:https://github.com/shosaco/vistime
la source
Très vieille question, je sais, mais cela vaut peut-être la peine de laisser ici - insatisfait des réponses que j'ai trouvées à cette question - il y a quelques mois, j'ai créé un package de base pour créer des diagrammes de Gantt basés sur ggplot2 : ganttrify (plus de détails dans le readme du package) .
Exemple de sortie:
la source
La bibliothèque PlotPrjNetworks fournit des outils de mise en réseau utiles pour la gestion de projet.
la source
Je voudrais améliorer le ggplot-Answer avec plusieurs barres pour chaque tâche.
Commencez par générer des données (dfrP est le data.frame de l'autre réponse, dfrR est un autre data.frame avec les dates de réalisation et mdfr est une fusion correspondant à l'instruction ggplot () suivante):
Tracez maintenant ces données en utilisant des facettes pour le nom de la tâche:
Sans les informations is.critiques, vous pourriez également utiliser Plan / Real comme couleur (ce que je préfère), mais je voulais utiliser le data.frame de l'autre réponse pour la rendre mieux comparable.
la source
Trouvé le geom_segment dans ggplot est génial. Des solutions précédentes, utilisez les données mais pas besoin de fondre.
GantPlot
la source
Vous pouvez jeter un œil à ce post. Cela utilise R et ggplot.
https://dwh-businessintelligence.blogspot.nl/2016/05/what-if-for-project-management.html
la source