Code前端首页关于Code前端联系我们

R中的数据可视化教程:甘特图

terry 2年前 (2023-09-24) 阅读数 70 #后端开发

甘特图(甘特图)也称为水平条形图和柱形图。它通过活动列表和时间表以图形方式表示给定项目的顺序和持续时间。一般来说,横轴代表时间,纵轴代表活动或项目,线条代表该期间的计划和实际完成状态。

甘特图主要用于工程项目管理。它们具有显示直观、制作简单、易于理解的特点,应用广泛。

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)
R语言数据可视化教程:甘特图

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

hc_vistime(data, 
           optimize_y = F) %>% 
  hc_size(width = 600,height = 300) #设置图片的尺寸
R语言数据可视化教程:甘特图

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

vistime(data, 
        optimize_y = FALSE, 
        linewidth = 30)
R语言数据可视化教程:甘特图

使用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
              )
    })
  }
)
R语言数据可视化教程:甘特图

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

3。使用g_vistime()绘制甘特图

gg_vistime(data,
           optimize_y = F, 
           col.group = "event",
           title = "ggplot customization example")
R语言数据可视化教程:甘特图

自定义图像格式

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'))
R语言数据可视化教程:甘特图

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

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门