搜索
查看: 820|回复: 0

R-plotly|交互式甘特图(Gantt chart)-项目管理/学习计划

[复制链接]

10

主题

11

帖子

181

积分

注册会员

Rank: 2

积分
181
发表于 2019-10-21 21:59:53 | 显示全部楼层 |阅读模式
本文首发于“生信补给站”微信公众号,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 1nrow(df) - 1)){
  p <- add_trace(p,
                 x = c(df$Start, df$Start + df$Duration),  #起试和终止
                 y = c(i, i),  #
                 mode = "lines",
                 line = list(color = df$color, width = 20), #设置line plot的颜色和线宽
                 showlegend = F,
                 hoverinfo = "text", #悬浮信息为text信息
                 #设置text显示内容
                 text = paste("Task: ", df$Task, "<br>",
                              "Duration: ", df$Duration, "days<br>",
                              "Resource: ", df$Resource),
                 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曲线

【觉得不错,右下角点个“在看”,期待您的转发,谢谢!】

微信图片.jpg
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树 ( 粤ICP备15016384号  

GMT+8, 2020-7-13 10:48 , Processed in 0.031068 second(s), 32 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.