首页 > 解决方案 > 绘制每个任务的时间长度

问题描述

我正在尝试制作一个图表来显示每个任务运行了多长时间

每个任务我有一行

task     |   Start_time |    Finish_time

Task 1    |  09:00:00    |   09:45:00
Task 2   |  09:20:00    |   13:15:00

所以我试图让 x 轴上的任务和 y 轴上的任务是 24 小时刻度线,并且一个条形图有它在这些时间运行的时间。

到目前为止,我有:

ggplot(sas_program_data, aes(xmin = Start_time, xmax = Finish_time, fill = factor(task)))

在此处输入图像描述

标签: rggplot2time

解决方案


您可以使用柱形图来显示此类信息。像这样的东西:

 library(magrittr)
 library(ggplot2)
 library(plyr)

 df <- data.frame(task=c("T1", "T2"),
             start=c("09:00:00", "09:20:00"),
             finish=c("09:45:00", "13:15:00")) %>%
    mutate(diff=strptime(df$finish, format = "%H:%M:%S")-strptime(df$start, format = "%H:%M:%S"))

 ggplot(aes(task, diff), data=df[, c("task", "diff")]) +
   geom_col()

geom_col()如果需要,您也可以通过添加来在位中添加颜色aes(fill=task)

如果你只想要积分,你可以geom_col()geom_point()diff替换finsih你只会得到2分:

 ggplot(aes(task, finish), data=df[, c("task", "finish")]) +
   geom_point()

编辑:感谢您更新图片。尝试这个:

 ggplot() +
   geom_segment(aes(y=start, yend=finish, x=task, xend=task), data = df, size=2)

您可以随意查看线条的外观和特定的轴刻度,但这应该可以帮助您入门。


推荐阅读