【问题标题】:How to plot events on time scale using R?如何使用 R 在时间尺度上绘制事件?
【发布时间】:2014-08-06 03:24:40
【问题描述】:

我有一个类似的 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 中完成这个?

谢谢

【问题讨论】:

标签: r time


【解决方案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 命令生成:

当线条重叠时,这里可能会出现一些歧义。

【讨论】:

  • 解释一下你在做什么可能会有帮助。
  • 我在上面添加了一些解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-28
  • 2016-01-02
  • 1970-01-01
  • 1970-01-01
  • 2019-05-25
  • 1970-01-01
相关资源
最近更新 更多