R-plotly|互動式甘特圖(Gantt chart)-項目管理/學習計劃
- 2019 年 10 月 21 日
- 筆記
甘特圖(Gantt chart),又常被稱為橫道圖或者條狀圖,是現代企業項目管理領域運用最為廣泛的一種圖示。就是通過條形來顯示項目的進度、時間安排等相關情況的。
項目管理外,也可以用來管理學習計劃。繪製甘特圖的工具有很多,本文介紹使用R-plotly包繪製互動式的甘特圖,保存html鏈接後,即可隨時查看。
一 準備數據
載入函數包,讀入數據
library(plotly)
# Read in data
df <- read.csv("GanttChart.csv", stringsAsFactors = F)
# Convert to dates
df$Start <- as.Date(df$Start, format = "%m/%d/%Y")
head(df,3)
二 繪製甘特圖
數據如上所示,只需任務或者項目內容Task,開始時間Start,持續的時間數據即可繪製甘特圖。
# 根據Resource 設置甘特圖的顏色
cols <- RColorBrewer::brewer.pal(length(unique(df$Resource)), name = "Set3")
df$color <- factor(df$Resource, labels = cols)
# 初始一個空對象
p <- plot_ly()
# 每個task一個line plot,起始時間和任務持續時長
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), #設置line plot的顏色和線寬
showlegend = F,
hoverinfo = "text", #懸浮資訊為text資訊
#設置text顯示內容
text = paste("Task: ", df$Task[i], "<br>",
"Duration: ", df$Duration[i], "days<br>",
"Resource: ", df$Resource[i]),
evaluate = T ,
xaxis = list(showgrid = F, tickfont = list(color = "#e6e6e6")),
yaxis = list(showgrid = F, tickfont = list(color = "#e6e6e6"),
tickmode = "array", tickvals = 1:nrow(df), ticktext = unique(df$Task),
domain = c(0, 0.9)),
plot_bgcolor = "#333333", # 設置顏色
paper_bgcolor = "#333333"
)
}
更改Layout資訊
-
去掉 gridlines
-
顯示task任務
p <- layout(p,
xaxis = list(showgrid = F, tickfont = list(color = "#e6e6e6")),
yaxis = list(showgrid = F, tickfont = list(color = "#e6e6e6"),
tickmode = "array", tickvals = 1:nrow(df), ticktext = unique(df$Task),
domain = c(0, 0.9)),
plot_bgcolor = "#333333", # Chart area 顏色
paper_bgcolor = "#333333") # Axis area 顏色
注:因未掌握互動式插入html方法,因此動態交互圖自行運行即可。
更多內容:
R|生存分析(1):生存分析介紹以及繪製KM曲線
Nomogram(諾莫圖) | Logistic、Cox生存分析結果可視化
maftools | 從頭開始繪製發表級oncoplot(瀑布圖)
ggalluvial|炫酷桑基圖(Sankey),你也可以秀