我想将一天中完成的工作显示为堆叠条形图,以便日复一日地查看我在每个类别中完成的事件量,Y 轴表示从 0:00 到 23 的时间: 59.
# day tstart tend duration category
1 2012-10-01 13:40 14:16 36 Recreation
2 2012-10-02 10:15 10:57 42 Work
3 2012-10-02 13:23 13:47 24 Chores
4 2012-10-02 13:47 14:48 61 Work
5 2012-10-03 09:09 11:40 151 Work
6 2012-10-03 13:33 14:04 31 Recreation
7 2012-10-03 17:00 19:40 160 Recreation
我知道我必须将“时间开始”转换为数字,但我不知道如何“合并”同一天的多行,以便它们只构成情节中的一个条。
在(非常原始的)ASCII 艺术中,我期待的是这样的:
23:00
22:00
21:00
20:00
19:00 C
18:00 C
17:00 C
16:00
15:00
14:00 W R
13:00 R C
12:00
11:00 W
10:00 W W
9:00 W
8:00
7:00
6:00
5:00
4:00
3:00
2:00
1:00
0:00
01 02 03
(其中 R、W 和 C 将是不同事件的不同颜色的条:娱乐、工作和家务)
事实上,作为 R 绘图的新手,我不知道我必须查看的绘图函数(和绘图包),而且因为它们将是绘图中的漏洞 - 之间没有记录(例如)事件0:00 和 09:09,然后在 2012-10-03 的 11:40 和 13:33 之间等等...
最佳答案
这是 ggplot2
的快速解决方案:
d <- read.table(textConnection("
day tstart tend duration category
2012-10-01 13:40 14:16 36 Recreation
2012-10-02 10:15 10:57 42 Work
2012-10-02 13:23 13:47 24 Chores
2012-10-02 13:47 14:48 61 Work
2012-10-03 09:09 11:40 151 Work
2012-10-03 13:33 14:04 31 Recreation
2012-10-03 17:00 19:40 160 Recreation"), header=TRUE)
d$day <- as.Date(d$day)
d$tstart <- as.POSIXct(d$tstart, format="%H:%M")
d$tend <- as.POSIXct(d$tend, format="%H:%M")
library(ggplot2)
library(scales)
g <- ggplot(data=d, aes()) + geom_segment(aes(x=day,xend=day,y=tstart,yend=tend,color=category),size=20) + scale_x_date(labels = date_format("%d"))
g + scale_y_datetime(limits=c(as.POSIXct("00:00", format="%H:%M"),as.POSIXct("23:59", format="%H:%M")), labels = date_format("%H:%M"))
这使 :
编辑:初始答案中的 y 轴是错误的。
关于r - R 中的堆积条形图,每天多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14747244/