如何使用R在时间尺度上绘制事件?

时间:2014-08-06 03:24:41

标签: r time

我有一个像

这样的csv文件
id,date,event
1,01-01-2014,E1 
1,01-02-2014,E2
2,01-03-2014,E1
2,01-04-2014,E1
2,01-05-2014,E2

我想在时间尺度上使用R绘制事件。例如,x轴将是日期,y轴将指示在特定日期发生的事件。这将是一组id的一个图表。在上面的数据集中,它将创建2个图。

这与时间序列(我认为)略有不同。无论如何要在R?

中完成这个

谢谢

1 个答案:

答案 0 :(得分:1)

尝试:

ddf = structure(list(id = c(1L, 1L, 2L, 2L, 2L), date = structure(1:5, .Label = c("01-01-2014", 
"01-02-2014", "01-03-2014", "01-04-2014", "01-05-2014"), class = "factor"), 
    event = structure(c(1L, 2L, 1L, 1L, 2L), .Label = c("E1", 
    "E2"), class = "factor")), .Names = c("id", "date", "event"
), class = "data.frame", row.names = c(NA, -5L))
> 

ddf$date2 = as.Date(ddf$date, format="%m-%d-%Y")
 ddf
  id       date event      date2
1  1 01-01-2014    E1 2014-01-01
2  1 01-02-2014    E2 2014-01-02
3  2 01-03-2014    E1 2014-01-03
4  2 01-04-2014    E1 2014-01-04
5  2 01-05-2014    E2 2014-01-05
> 

ggplot(data=ddf, aes(x=date2, y=event, group=factor(id), color=factor(id)))+
    geom_line()+
    geom_point()+
    facet_grid(id~.)

enter image description here

编辑:代码简单且不言自明。基本上,日期保持在x轴,事件保持在y轴。为清楚起见,图表是针对不同的ID单独绘制的(使用facet_grid命令),尽管它们也可以保存在同一个图形中,如下图所示,通过在上面的代码中排除facet_grid命令生成:

enter image description here

当线条重叠时,可能会有一些歧义。