Un diagrama de Gantt necesita un data frame con al menos tres columnas: el nombre de la tarea, la fecha de inicio y la fecha de fin. Una columna de fase o categoria opcional permite colorear las tareas por grupo.
tasks <- data.frame(
tarea = c("Requisitos", "Diseno UI", "Backend", "Frontend",
"Integracion", "Pruebas", "Correcciones", "Despliegue"),
inicio = as.Date(c("2024-01-08", "2024-01-15", "2024-01-22", "2024-02-05",
"2024-03-04", "2024-03-11", "2024-03-25", "2024-04-08")),
fin = as.Date(c("2024-01-19", "2024-02-02", "2024-03-01", "2024-03-08",
"2024-03-22", "2024-04-05", "2024-04-05", "2024-04-12")),
fase = c("Planificacion", "Diseno", "Desarrollo", "Desarrollo",
"Desarrollo", "QA", "QA", "Lanzamiento")
)
geom_segment()
Mapea inicio a x, fin a xend y tarea a y e yend. geom_segment() dibuja una barra horizontal por cada fila. Aumenta linewidth para que las barras sean lo suficientemente altas para leerlas.
# install.packages("ggplot2")
library(ggplot2)
ggplot(tasks, aes(x = inicio, xend = fin,
y = tarea, yend = tarea)) +
geom_segment(linewidth = 8) +
labs(x = NULL, y = NULL) +
theme_minimal()


Anade color = fase en aes() para colorear cada tarea segun su fase de proyecto. Usa scale_color_manual() para asignar colores especificos a cada nombre de fase.
# install.packages("ggplot2")
library(ggplot2)
ggplot(tasks, aes(x = inicio, xend = fin,
y = tarea, yend = tarea,
color = fase)) +
geom_segment(linewidth = 8) +
labs(x = NULL, y = NULL, color = "Fase") +
theme_minimal()
Por defecto las tareas aparecen en orden alfabetico. Usa reorder() para ordenarlas por fecha de inicio, de forma que la linea de tiempo se lea de arriba a abajo en orden cronologico.
# install.packages("ggplot2")
library(ggplot2)
tasks$tarea <- reorder(tasks$tarea,
tasks$inicio)
ggplot(tasks, aes(x = inicio, xend = fin,
y = tarea, yend = tarea,
color = fase)) +
geom_segment(linewidth = 8) +
theme_minimal()


Anade geom_text() para imprimir el nombre de la tarea al inicio de cada barra. Usa hjust = -0.1 para desplazar la etiqueta ligeramente hacia la derecha y oculta las etiquetas del eje Y con axis.text.y = element_blank() para evitar duplicados.
# install.packages("ggplot2")
library(ggplot2)
ggplot(tasks, aes(x = inicio, xend = fin,
y = tarea, yend = tarea,
color = fase)) +
geom_segment(linewidth = 8, alpha = 0.7) +
geom_text(aes(label = tarea, x = inicio),
hjust = -0.1,
color = "black",
size = 3) +
theme_minimal() +
theme(axis.text.y = element_blank())
Usa scale_x_date() para controlar el formato de las etiquetas del eje y la frecuencia de las marcas. Anade un geom_vline() en cualquier fecha para marcar un hito o la fecha actual.
# install.packages("ggplot2")
library(ggplot2)
ggplot(tasks, aes(x = inicio, xend = fin,
y = tarea, yend = tarea,
color = fase)) +
geom_segment(linewidth = 8, alpha = 0.85) +
geom_vline(xintercept = as.Date("2024-03-01"),
linetype = "dashed", color = "grey40") +
scale_x_date(date_labels = "%b %Y",
date_breaks = "1 month") +
labs(x = NULL, y = NULL, color = "Fase") +
theme_minimal()

Aprende estadística desde lo básico hasta técnicas avanzadas, explicado con claridad
Ir al sitio
También te puede interesar