作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限于信息计量、机器学习、数据可视化、应用统计建模、知识图谱等,著有《R语言高效数据处理指南》(《R语言数据高效处理指南》(黄天元)【摘要 书评 试读】- 京东图书)。知乎专栏:R语言数据挖掘。邮箱:huang.tian-yuan@qq.com.欢迎合作交流。
今天经过群友推荐,看到了vistime这个包,能够非常容易地画甘特图,非常高兴。甘特图经常用来做工作计划的可视化,比较实用,具体资料可参考:
vistime底层有plotly包和ggplot2包支撑,可以便捷生成甘特图,还能够更改颜色、字体、背景等各种设置。具体链接如下:
下面简单用一些代码来介绍如何使用,具体参考了帮助文档其官网的帮助文档,链接为: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来绘制
一个甘特图,在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")