是否可以在 ggplot 中制作在同一个图表上具有多个时间间隔的甘特图?

Har*_*ted 0 r gantt-chart ggplot2

我正在尝试在 R 中创建一个甘特图,其中我可以在同一个图表上将实际开始和实际完成与建议开始和建议完成的时间线进行比较。因此,y 轴会显示两次“仓库”,然后 x 轴将显示每个时间间隔的分段。

下面是我用来尝试此操作的代码,但它显然不起作用。

一如既往,我感谢任何和所有的帮助。谢谢。

library(tidyverse)


project_data <- tibble(
  Project_Name = c("Warehouse"),
  Proposed_Start = c("05-01-2022"),
  Proposed_Finish = c("12-01-2022"),
  Actual_Start = c("07-01-2022"),
  Actual_Finish = c("12-31-2022")
)


project_data %>%
      ggplot() +
        aes(x = Proposed_Start, xend = Proposed_Finish,
            y = Project_Name, yend = Project_Name,
            color = "green") +
        geom_segment(size = 8) +
        aes(x = Actual_Start, xend = Actual_Finish,
            y = Project_Name, yend = Project_Name,
            color = "red") +
        geom_segment(size = 8) +
        labs(title = "Comparing Project Proposed and Actual Dates",
             x = "Start and Finish Dates",
             y = "Project Name")
Run Code Online (Sandbox Code Playgroud)

All*_*ron 5

您可以使用pivot_longer,它将开始日期放在一列中,将完成日期放在另一列中,并创建一列将行标记为“建议”和“实际”。您可以躲避这些线,以便它们在 y 轴上的同一点处可见。如果您切换到geom_linerange. 旋转后,您只需要一个几何图层,因为您可以将建议/实际列映射到颜色。

这应该适用于同一地块中的多个项目。

project_data %>%
  pivot_longer(-1, names_sep = "_", names_to = c("Type", ".value")) %>%
  ggplot(aes(xmin = Start, xmax = Finish, color = Type,
             y = Project_Name)) +
  geom_linerange(size = 8, position = position_dodge(width = 0.5)) +
  labs(title = "Comparing Project Proposed and Actual Dates",
       x = "Start and Finish Dates",
       y = "Project Name") +
  scale_colour_manual(values = c("orange", "deepskyblue4")) +
  theme_minimal(base_size = 16)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述