【问题标题】:Stacked bar chart with continuous time-axis as x-axis以连续时间轴为 x 轴的堆积条形图
【发布时间】:2012-12-25 02:01:33
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    我不确定使用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"))
    

    【讨论】:

    • 美丽而简单。缺点是两个“条”之间的垂直空间现在似乎取决于图表高度。不过,我们可能可以忍受……
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多