13.12 甘特图
项目管理必备,如图所示,本项目拆分成7个任务,一共使用3种项目资源
# https://plotly.com/r/gantt/
# 项目拆解为一系列任务,每个任务的开始时间,持续时间和资源类型
<- data.frame(
df task = paste("Task", 1:8),
start = as.Date(c(
"2016-01-01", "2016-02-20", "2016-01-01",
"2016-04-10", "2016-06-09", "2016-04-10",
"2016-09-07", "2016-11-26"
)),duration = c(50, 25, 100, 60, 30, 150, 80, 10),
resource = c("A", "B", "C", "C", "C", "A", "B", "B")
%>%
) transform(end = start + duration) %>%
transform(y = 1:nrow(.))
plot_ly(data = df) %>%
add_segments(
x = ~start, xend = ~end,
y = ~y, yend = ~y,
color = ~resource,
mode = "lines",
colors = "Greys",
line = list(width = 20),
showlegend = F,
hoverinfo = "text",
text = ~ paste(
" 任务: ", task, "<br>",
"启动时间: ", start, "<br>",
"周期: ", duration, "天<br>",
"资源: ", resource
)%>%
) layout(
xaxis = list(
showgrid = F,
title = list(text = "")
),yaxis = list(
showgrid = F,
title = list(text = ""),
tickmode = "array",
tickvals = 1:nrow(df),
ticktext = unique(df$task),
domain = c(0, 0.9)
),annotations = list(
list(
xref = "paper", yref = "paper",
x = 0.80, y = 0.1,
text = paste0(
"项目周期: ", sum(df$duration), " 天<br>",
"资源类型: ", length(unique(df$resource)), " 个<br>"
),font = list(size = 12),
ax = 0, ay = 0,
align = "left"
),list(
xref = "paper", yref = "paper",
x = 0.1, y = 1,
xanchor = "left",
text = "项目资源管理",
font = list(size = 20),
ax = 0, ay = 0,
align = "left",
showarrow = FALSE
)
) )