ITPub博客

首页 > > > R语言画甘特图:vistime

R语言画甘特图:vistime

作者:浪花小雨滴 时间:2020-06-19 16:21:24 0 删除 编辑

作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限于信息计量、机器学习、数据可视化、应用统计建模、知识图谱等,著有《R语言高效数据处理指南》(《R语言数据高效处理指南》(黄天元)【摘要 书评 试读】- 京东图书)。知乎专栏:R语言数据挖掘。邮箱:huang.tian-yuan@qq.com.欢迎合作交流。

今天经过群友推荐,看到了vistime这个包,能够非常容易地画甘特图,非常高兴。甘特图经常用来做工作计划的可视化,比较实用,具体资料可参考:

甘特图_百度百科

怎么画好一个项目甘特图

如何使用 Excel 绘制甘特图?

vistime底层有plotly包和ggplot2包支撑,可以便捷生成甘特图,还能够更改颜色、字体、背景等各种设置。具体链接如下:

CRAN - Package vistime

下面简单用一些代码来介绍如何使用,具体参考了帮助文档其官网的帮助文档,链接为:vistime。简单的示例,我们可以来看数据框狗仔的基本格式。

library(pacman)
p_load(vistime,tidyfst)

timeline_data <- data.frame(event=c("Event 1", "Event 2"), 
 start = c("2020-06-06", "2020-10-01"), 
 end = c("2020-10-01", "2020-12-31"), 
 group = "My Events")

vistime(timeline_data) #使用plotly绘制
vistime_data(timeline_data) # 查看数据
gg_vistime(timeline_data) #使用ggplot2来绘制
plotly绘制
查看数据内部结构
ggplot2版本

一个甘特图,在vistime中至少需要3列来定义,包括起始时间(start和end),以及event来为之分组。至于group则能够对其分组进行说明。比如下面这个数据,我们根据任期是总统还是副总统来进行分组:

pres <- data.frame(Position = rep(c("President", "Vice"), each = 3),
                   Name = c("Washington", rep(c("Adams", "Jefferson"), 2), "Burr"),
                   start = c("1789-03-29", "1797-02-03", "1801-02-03"),
                   end = c("1797-02-03", "1801-02-03", "1809-02-03"),
                   color = c('#cbb69d', '#603913', '#c69c6e'),
                   fontcolor = c("black", "white", "black"))
vistime(pres , groups  = "Name",events = "Position",
        title = "Presidents of the USA")

个人认为,需要用得最多的是这种:

data <- read.csv(text="event,start,end
                       Phase 1,2020-12-15,2020-12-24
                       Phase 2,2020-12-23,2020-12-29
                       Phase 3,2020-12-28,2021-01-06
                       Phase 4,2021-01-06,2021-02-02")
vistime(data, optimize_y = FALSE)

如果需要保存,可以使用plotly自带的export函数:

chart <- vistime(pres, events="Position")
plotly::export(chart, file = "presidents.pdf")

原文作者:;如有侵权,请联系管理员删除。

下一篇: Hbase 权限控制
请登录后发表评论 登录
全部评论

注册时间:2018-05-16

  • 博文量
    4259
  • 访问量
    40093