我有一个像
这样的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?
中完成这个谢谢
答案 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~.)
编辑:代码简单且不言自明。基本上,日期保持在x轴,事件保持在y轴。为清楚起见,图表是针对不同的ID单独绘制的(使用facet_grid命令),尽管它们也可以保存在同一个图形中,如下图所示,通过在上面的代码中排除facet_grid命令生成:
当线条重叠时,可能会有一些歧义。