R语言数据可视化教程:甘特图

甘特图(Gantt chart)又称为横道图、条状图。其以图示通过活动列表和时间刻度表示出特定项目的顺序与持续时间。一般用横轴表示时间,纵轴表示活动或项目,线条表示期间计划和实际完成情况。

甘特图主要应用于工程项目管理,具有直观展示、制作简单、便于理解等特点,得到广泛的应用。

在R语言中有很多包可以绘制甘特图,我们以简单易用的vistime进行演示,该包功能强大,自定义程度较高,可以满足大部分情况下的使用。

加载包

library(vistime)
library(highcharter)
library(ggplot2)

构造一个虚拟的数据集,主要内容包括项目事件、开始时间、结束时间及区分项目事件的颜色向量。

data <- read.csv(text="event,start,end, color
                       Task 1,2020-8-23,2020-12-29,green
                       Task 2,2020-10-15,2020-12-24,red
                       Task 3,2020-10-28,2021-01-06,blue
                       Task 4,2021-01-06,2021-02-02,orange"
                 )

1、hc_vistime()函数绘制甘特图

#默认参数绘制甘特图
hc_vistime(data)

在默认参数下,Task1和Task4 时间不重叠,可以在同一水平线上显示。

hc_vistime(data, 
           optimize_y = F) %>% 
  hc_size(width = 600,height = 300) #设置图片的尺寸

2、使用vistime()绘制甘特图

vistime(data, 
        optimize_y = FALSE, 
        linewidth = 30)

使用shiny动态显示甘特图

library(shiny)
shinyApp(
  ui = plotly::plotlyOutput("myVistime"),
  server = function(input, output) {
    output$myVistime <- plotly::renderPlotly({
      vistime(data, col.event = "event",
              col.group = "event",
              linewidth = 25
              )
    })
  }
)

在shinyApp生成的图片中可以显示项目事件的开始和结束日期。

3、使用g_vistime()函数绘制甘特图

gg_vistime(data,
           optimize_y = F, 
           col.group = "event",
           title = "ggplot customization example")

自定义图片格式

gg_vistime(data,
           optimize_y = F, 
           col.group = "event",
           title = "ggplot customization example")+
  theme(
  plot.title = element_text(hjust = 0, size=20),
  axis.text.x = element_text(size = 10, color = "violet"),
  axis.text.y = element_text(size = 10, color = "red", angle = 30),
  panel.border = element_rect(linetype = "dashed", fill=NA),
  panel.background = element_rect(fill = 'lightgray'))

参考资料 https://shosaco.github.io/vistime/

THE END