前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R-plotly|甘特图(Gantt chart)- 一不小心年中了,立个flag

R-plotly|甘特图(Gantt chart)- 一不小心年中了,立个flag

作者头像
生信补给站
发布2020-08-05 11:05:10
9390
发布2020-08-05 11:05:10
举报
文章被收录于专栏:生信补给站生信补给站

利用甘特图(Gantt chart)管理学习计划,通过条形来显示项目的进度、时间安排等相关情况。

一 数据准备

加载函数包,读入数据
代码语言:javascript
复制
library(plotly)
# 读取数据
df <- read.csv("GanttChart-July.csv", stringsAsFactors = F)
# 转为Date类型
df$Start <- as.Date(df$Start, format = "%m/%d/%Y")
head(df)

绘制甘特图

数据如上,只需任务内容Task,开始时间Start,持续的时间数据即可绘制甘特图。

代码语言:javascript
复制
# 根据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任务
  3. 更改背景颜色
代码语言:javascript
复制
代码语言:javascript
复制
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
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信补给站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 加载函数包,读入数据
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档