利用优秀的 R timevis 包中的分组功能有很好的记录,并且在 timevis::timevis() 的帮助页面中提供了示例。

该文档还说可以定义子组,其中

“按子组将组内的所有项目分组,并将它们放置在相同的高度,而不是将它们堆叠在一起。”

我无法理解如何使用此功能。例如,在下面的示例中,我希望“事件 1”和“事件 2”被定义为它们自己的子组,因此它们将位于相同的高度。然而,这种情况并非如此。

timedata <- data.frame(
  id = 1:6,
  start = Sys.Date() + c(1, - 10, 4, 20, -10, 10),
  end = c(rep(as.Date(NA), 4), Sys.Date(), Sys.Date() + 20),
  group = c(1,1,1,2,2,2),
  content = c("event 1", "event 2", "event 2", "event 1", "range 1",     "range 1"),
  subgroup = c("1.1", "1.2", "1.2", "2.1", "2.2", "2.2")
)

groups <- data.frame(id = c(1,2), content = c("g1", "g2"))
timevis::timevis(data =timedata, groups = groups)

The result of the example code. The definition of subgroups is unsuccesful

如何正确利用子组功能?

最佳答案

我自己正在处理 subgroup 和 subgroupOrder 函数,并想分享一些技巧。下面的代码应该实现将事件相互叠加,而不是堆叠它们。请注意在选项列表()中添加了 stack = FALSE
另一个要看的地方是 JS 文档:http://visjs.org/docs/timeline/

  timedata <- data.frame(
      id = 1:6,
      start = Sys.Date() + c(1, - 10, 4, 20, -10, 10),
      end = c(rep(as.Date(NA), 4), Sys.Date(), Sys.Date() + 20),
      group = c(1,1,1,2,2,2),
      content = c("event 1", "event 2", "event 2", "event 1", "range 1",     "range 1"),
      subgroup = c("1.1", "1.2", "1.2", "2.1", "2.2", "2.2")
    )

    groups <- data.frame(id = c(1,2), content = c("g1", "g2"))
    timevis::timevis(data =timedata, groups = groups, options = list(stack = FALSE))
产生这个输出,
r - R timevis 中的子组-LMLPHP
不确定这是否正是您想要实现的目标,而只是回应。希望你在其他方面取得了一些进展!

关于r - R timevis 中的子组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45235338/

10-11 17:48