甘特图(Gantt chart),又常被称为横道图或者条状图,是现代企业项目管理领域运用最为广泛的一种图示。就是通过条形来显示项目的进度、时间安排等相关情况的。
项目管理外,也可以用来管理学习计划。绘制甘特图的工具有很多,本文介绍使用R-plotly包绘制交互式的甘特图,保存html链接后,即可随时查看。
数据准备
加载函数包,读入数据
library(plotly)# Read in datadf read.csv("GanttChart.csv", stringsAsFactors = F)# Convert to datesdf$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], "
", "Duration: ", df$Duration[i], "days
", "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 color paper_bgcolor = "#333333") # Axis area color
注:因未掌握交互式插入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-富集分析
【觉得不错,右下角点个“在看”,期待您的转发,谢谢!】