带有连续时间轴作为x轴的堆积条形图

时间:2013-01-10 16:03:11

标签: r ggplot2 time bar-chart data-visualization

我们正在监控3个进程A,B和C,它们总是处于X,Y或Z级别。协议记录进程何时更改级别。

df = read.csv(tc <- textConnection('Time1,Process1,Level1
2013-01-09 18:00:34,A,X
2013-01-09 18:00:34,B,Y
2013-01-09 18:00:34,C,X
2013-01-09 18:00:59,A,Z
2013-01-09 18:01:06,A,X
2013-01-09 18:01:10,C,Y
2013-01-09 18:01:10,B,Z
2013-01-09 18:01:13,A,Z
2013-01-09 18:01:18,A,Off
2013-01-09 18:01:18,B,Off
2013-01-09 18:01:18,C,Off
'),header=TRUE)
close.connection(tc) 
df$Time1 = as.POSIXct(df$Time1)

监测于18:00:34开始,并于18:01:18关闭。在18:00:34到18:00:59之间,流程A处于X级,18:00:59到18:01:06,流程A处于Z级。

我们希望在x轴上显示18:00:34到18:01:18之间的连续间隔,以及三个相等宽度的水平条(A,B,C),表示当前的过程水平x轴上显示的时间。

低于我们上次尝试的内容。图表的总体结构似乎是正确的,但时间轴没有多大意义,数据也缺失。 (我们不需要Off类别,但是一旦时间轴有意义,它可能很容易被删除。)任何指导都将非常感激。

ggplot() + 
  geom_bar(data=df, aes(x=Process1, y=Time1, fill=Level1)) + 
  coord_flip()

enter image description here

1 个答案:

答案 0 :(得分:2)

我不确定使用geom_bar来执行此操作,但如果我增加行的大小,我可以让geom_line做类似的事情。

library(ggplot2)
library(scales)
ggplot(df, aes(x=Time1, y=Process1, group=Process1, colour=Level1)) + 
  geom_line(size=5) + scale_x_datetime("",  labels = date_format("%H:%M:%S"))

enter image description here