Hat jemand R verwendet, um ein Gantt-Diagramm zu erstellen ?
PS Ich könnte ohne die Abhängigkeitspfeile leben.
quelle
Hat jemand R verwendet, um ein Gantt-Diagramm zu erstellen ?
PS Ich könnte ohne die Abhängigkeitspfeile leben.
Es gibt jetzt einige elegante Möglichkeiten, ein Gantt-Diagramm in R zu erstellen.
Candela benutzen
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)
Verwenden von 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
")
Finden Sie dieses und viele weitere Beispiele auf DiagrammeR
GitHub
Wenn Ihre Daten in a gespeichert sind data.frame
, können Sie die zu übergebende Zeichenfolge erstellen, mermaid()
indem Sie sie in das richtige Format konvertieren.
Folgendes berücksichtigen:
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
Verwenden von dplyr
und tidyr
(oder einer Ihrer bevorzugten Datenquellen):
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"
)
)
Wie von @GeorgeDontas in den Kommentaren erwähnt, gibt es einen kleinen Hack , der es ermöglichen könnte, die Beschriftungen der x-Achse in Datumsangaben anstelle von 'w.01, w.02' zu ändern.
Angenommen, Sie haben das obige Meerjungfrauen-Diagramm in gespeichert m
, gehen Sie wie folgt vor :
m$x$config = list(ganttConfig = list(
axisFormatter = list(list(
"%b %d, %Y"
,htmlwidgets::JS(
'function(d){ return d.getDay() == 1 }'
)
))
))
Welches gibt:
Timevis verwenden
Vom timevis
GitHub :
timevis
Mit dieser Option können Sie umfangreiche und vollständig interaktive Timeline-Visualisierungen in R erstellen . Timelines können in Shiny-Apps und R-Markdown-Dokumenten enthalten sein oder über die R-Konsole und den RStudio Viewer angezeigt werden.
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)
Welches gibt:
Plotly verwenden
Ich bin auf diesen Beitrag gestoßen, der eine andere Methode zur Verfügung stellt plotly
. Hier ist ein Beispiel:
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
Welches gibt:
Sie können dann zusätzliche Informationen und Anmerkungen hinzufügen, Schriftarten und Farben anpassen usw. (Details siehe Blog-Beitrag)
timevis
inR
sieht cool und einfach aus. :-)Ein einfaches
ggplot2
Gantt-Diagramm.Zuerst erstellen wir einige Daten.
Zeichnen Sie nun die Handlung.
quelle
Erwägen Sie die Verwendung des Pakets
projmanr
(Version 0.1.0, veröffentlicht am 23. August 2017 auf CRAN).taskdata1
::Beginnen Sie nun mit der Vorbereitung von gantt:
quelle
Versuche dies:
quelle
Das Paket
plan
unterstützt die Erstellung von Burndown-Diagrammen und Gantt-Diagrammen und enthält eineplot.gantt
Funktion. Siehe diese Seite mit dem R-GrafikhandbuchSiehe auch, wie Sie mit Plotlys R-API eine G in R erstellen . GANTT CHARTS IN R VERWENDEN VON PLOTLY .
quelle
Sie können dies mit dem GoogleVis-Paket tun :
Quelle: https://cran.r-project.org/web/packages/googleVis/vignettes/googleVis_examples.html
quelle
Ich habe das obige Beispiel von Richie verwendet und modifiziert, es hat wie ein Zauber funktioniert. Geänderte Version, um zu zeigen, wie sein Modell in die Aufnahme von CSV-Daten anstatt in manuell bereitgestellte Textelemente übersetzt werden kann.
HINWEIS : Richie Antwort fehlte Hinweis darauf , dass zwei Pakete ( reshape und ggplot2 ) für die oben / unten Code zur Arbeit benötigt werden.
quelle
Hier ist ein Beitrag , den ich über die Verwendung von ggplot geschrieben habe, um so etwas wie ein Gantt-Diagramm zu generieren. Nicht sehr raffiniert, könnte Ihnen aber einige Ideen geben.
quelle
Für mich war Gvistimeline das beste Tool, um dies zu tun, aber die erforderliche Online-Verbindung war für mich nicht nützlich. Daher habe ich ein Paket namens verwendet
vistime
, das verwendetplotly
(ähnlich der Antwort von @Steven Beaupré), damit Sie zoomen können usw.:https://github.com/shosaco/vistime
quelle
Sehr alte Frage, ich weiß, aber vielleicht lohnt es sich, hier zu bleiben, dass ich - unzufrieden mit den Antworten, die ich auf diese Frage gefunden habe - vor einigen Monaten ein Basispaket für die Erstellung von ggplot2-basierten Gantt-Diagrammen erstellt habe: ganttrify (weitere Details in der Readme- Datei des Pakets) .
Beispielausgabe:
quelle
Die Bibliothek PlotPrjNetworks bietet nützliche Netzwerkwerkzeuge für das Projektmanagement.
quelle
Ich möchte die ggplot-Antwort mit mehreren Balken für jede Aufgabe verbessern.
Generieren Sie zuerst einige Daten (dfrP ist der data.frame der anderen Antwort, dfrR ist ein anderer data.frame mit Realisierungsdaten und mdfr ist eine Zusammenführungsanpassung an die folgende ggplot () - Anweisung):
Zeichnen Sie nun diese Daten mit Facetten für den Aufgabennamen:
Ohne die is.critical-Information könnten Sie auch Plan / Real als Farbe verwenden (was ich bevorzugen würde), aber ich wollte den data.frame der anderen Antwort verwenden, um die Vergleichbarkeit zu verbessern.
quelle
Fand das geom_segment in ggplot ist großartig. Aus den vorherigen Lösungen verwenden Sie die Daten, müssen aber nicht schmelzen.
GantPlot
quelle
Sie können sich diesen Beitrag ansehen. Dies verwendet R und ggplot.
https://dwh-businessintelligence.blogspot.nl/2016/05/what-if-for-project-management.html
quelle