Alguém usou R para criar um gráfico de Gantt ?
PS Eu poderia viver sem as setas de dependência.
fonte
Alguém usou R para criar um gráfico de Gantt ?
PS Eu poderia viver sem as setas de dependência.
Existem agora algumas maneiras elegantes de gerar um gráfico de Gantt em R.
Usando 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)
Usando 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
")
Encontre este exemplo e muitos mais no DiagrammeR
GitHub
Se os seus dados estiverem armazenados em a data.frame
, você pode criar a string a ser transmitida mermaid()
, convertendo-a no formato apropriado.
Considere o seguinte:
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
Usando dplyr
e tidyr
(ou qualquer um de seus recursos favoritos de troca de dados):
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"
)
)
Conforme mencionado por @GeorgeDontas nos comentários, existe um pequeno hack que poderia permitir alterar os rótulos do eixo x para datas em vez de 'w.01, w.02'.
Supondo que você salvou o gráfico da sereia acima m
, faça:
m$x$config = list(ganttConfig = list(
axisFormatter = list(list(
"%b %d, %Y"
,htmlwidgets::JS(
'function(d){ return d.getDay() == 1 }'
)
))
))
Que dá:
Usando o timevis
Do timevis
GitHub :
timevis
permite que você crie visualizações de linha do tempo ricas e totalmente interativas em R. As linhas de tempo podem ser incluídas em aplicativos Shiny e documentos de marcação R, ou visualizadas no console R e no 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)
Que dá:
Usando plotly
Me deparei com este post fornecendo outro método usando plotly
. Aqui está um exemplo:
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
Que dá:
Você pode adicionar informações e anotações adicionais, personalizar fontes e cores etc. (consulte a postagem do blog para obter detalhes)
timevis
emR
parece legal e simples. :-)Um
ggplot2
gráfico de Gantt simples .Primeiro, criamos alguns dados.
Agora desenhe o gráfico.
fonte
Considere usar o pacote
projmanr
(versão 0.1.0 lançada no CRAN em 23 de agosto de 2017).taskdata1
:Agora comece a preparar Gantt:
fonte
Experimente isto:
fonte
O pacote
plan
suporta a criação de gráficos de burndown e diagramas de Gantt e contém umaplot.gantt
função. Veja esta página do Manual Gráfico RVeja também como fazer um em R usando R API GANTT CHARTS EM R USING PLOTLY do Plotly .
fonte
Você pode fazer isso com o pacote GoogleVis :
Fonte: https://cran.r-project.org/web/packages/googleVis/vignettes/googleVis_examples.html
fonte
Usei e modifiquei o exemplo acima de Richie, funcionou como um encanto. Versão modificada para mostrar como seu modelo pode se traduzir na ingestão de dados CSV em vez de itens de texto fornecidos manualmente.
NOTA : A resposta de Richie estava faltando indicação de que 2 pacotes ( remodelar e ggplot2 ) são necessários para o / acima código abaixo ao trabalho.
fonte
Aqui está um post que escrevi sobre o uso do ggplot para gerar algo como um gráfico de Gantt. Não é muito sofisticado, mas pode lhe dar algumas idéias.
fonte
Para mim, Gvistimeline era a melhor ferramenta para fazer isso, mas sua conexão online necessária não foi útil para mim. Por isso criei um pacote chamado
vistime
que usaplotly
(parecido com a resposta de @Steven Beaupré), então você pode dar zoom etc .:https://github.com/shosaco/vistime
fonte
Pergunta muito antiga, eu sei, mas talvez valha a pena deixar aqui que - insatisfeito com as respostas que encontrei para esta pergunta - alguns meses atrás fiz um pacote básico para fazer gráficos de Gantt baseados em ggplot2 : ganttrify (mais detalhes no leia-me do pacote) .
Saída de exemplo:
fonte
A biblioteca PlotPrjNetworks fornece ferramentas de rede úteis para gerenciamento de projetos.
fonte
Eu gostaria de melhorar o ggplot-Answer com várias barras para cada tarefa.
Primeiro gere alguns dados (dfrP é o data.frame da outra resposta, dfrR é algum outro data.frame com datas de realização e mdfr é um ajuste de mesclagem para a seguinte instrução ggplot () -):
Agora plote esses dados usando facetas para o nome da tarefa:
Sem o is.critical-information, você também poderia usar Plan / Real como cor (o que eu preferiria), mas eu queria usar o data.frame da outra resposta para torná-lo melhor comparável.
fonte
O geom_segment encontrado no ggplot é ótimo. Das soluções anteriores, use os dados, mas não há necessidade de derreter.
GantPlot
fonte
Você poderia dar uma olhada neste post. Isso usa R e ggplot.
https://dwh-businessintelligence.blogspot.nl/2016/05/what-if-for-project-management.html
fonte