1

我们正在监视 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()

在此处输入图像描述

4

1 回答 1

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

在此处输入图像描述

于 2013-01-10T17:18:21.140 回答