【问题标题】:plotting length of time for each task绘制每个任务的时间长度
【发布时间】:2018-11-26 22:56:34
【问题描述】:

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

每个任务我有一行

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)))

【问题讨论】:

  • 我刚刚添加了我尝试的代码,但图表显示不正确
  • 您的代码存在一些问题。首先,ggplot 接受参数x = y = ,而不是xminxmax。其次,你还没有添加geom,比如geom_col。第三,从您的示例数据中不清楚时间的变量类型(例如字符,句点)。
  • 你需要它是一条线吗?我认为线条并不是展示这一点的最佳方式,柱形图/条形图可能会更好
  • 条形或只是点都可以,但我无法以任何方式显示

标签: r ggplot2 time


【解决方案1】:

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

 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()

您也可以通过添加aes(fill=task)geom_col() 位中添加颜色。

如果您只想要积分,您可以将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)

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

【讨论】:

  • 有没有办法绘制两个 y 值而不是显示差异?
  • 嗯,我不确定那会是什么样子。也很难比较任何一条线,因为它们不是同时开始的。你能附上一张你希望它看起来像什么的图片吗?即使它在油漆中做得很糟糕,也更容易将其用作起点
  • 还可以查看游泳者图。它们可能是展示数据的好方法
  • 我添加了所需输出的图片
  • 是的!我没有意识到有一个 geom_segment 选项。我没有太多使用ggplot2。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-13
  • 1970-01-01
  • 2016-06-23
相关资源
最近更新 更多