R-plotly|互動式甘特圖(Gantt chart)-項目管理/學習計劃

  • 2019 年 10 月 21 日
  • 筆記

本文首發於“生信補給站”微信公眾號,https://mp.weixin.qq.com/s/CGz51qOjFSJ4Wx_qOMzjiw 更多關於R語言,ggplot2繪圖,生信分析的內容,敬請關注小號。

 

甘特圖(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資訊

  1. 去掉 gridlines

  2. 顯示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生存分析結果可視化

Forest plot(森林圖) | Cox生存分析可視化

maftools|TCGA腫瘤突變數據的匯總,分析和可視化

maftools | 從頭開始繪製發表級oncoplot(瀑布圖)

ggalluvial|炫酷桑基圖(Sankey),你也可以秀

ggplot2|詳解八大基本繪圖要素

ggplot2|ggpubr進行“paper”組圖合併

pheatmap|暴雨暫歇,“熱圖”來襲!!!

ggplot2-plotly|讓你的火山圖“活”過來

ggplot2| 繪製KEGG氣泡圖

ggplot2|繪製GO富集柱形圖

繪圖系列|R-corrplot相關圖

繪圖系列|R-VennDiagram包繪製韋恩圖

R|clusterProfiler-富集分析

 

【覺得不錯,右下角點個“在看”,期待您的轉發,謝謝!】