2013-01-10 87 views
1

我们正在监视3个过程A,B和C,这些过程始终处于级别X,Y或Z.协议记录过程更改级别时的情况。连续时间轴为x轴的堆积条形图

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轴上显示的当前进程级别。

低于我们最后一次尝试。图表的总体结构看起来不错,但时间轴没有多大意义,数据也不见了。 (我们不需要关闭类别,但一旦时间轴有意义就很容易将其切断。)任何指导都将非常感激。

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

enter image description here

回答

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

+0

美观那么简单。缺点是现在两个“酒吧”之间的垂直空间似乎取决于图表高度。虽然我们可以生活在那里 –