使用R中的timevis创建嵌套子组

Jon*_*gra 5 timeline r vis.js htmlwidgets

我想创建像时间轴这个Rtimevis包.我知道如何在演示中建立一个组:

library(timevis)

dataGroups <- data.frame(
  id = 1:11,
  content = c(
    "Open",
    "Open",
    "Open",
    "Open",
    "Half price entry",
    "Staff meeting",
    "Open",
    "Adults only",
    "Open",
    "Hot tub closes",
    "Siesta"
  ),
  start = c(
    "2016-05-01 07:30:00",
    "2016-05-01 14:00:00",
    "2016-05-01 06:00:00",
    "2016-05-01 14:00:00",
    "2016-05-01 08:00:00",
    "2016-05-01 08:00:00",
    "2016-05-01 08:30:00",
    "2016-05-01 14:00:00",
    "2016-05-01 16:00:00",
    "2016-05-01 19:30:00",
    "2016-05-01 12:00:00"
  ),
  end   = c(
    "2016-05-01 12:00:00",
    "2016-05-01 20:00:00",
    "2016-05-01 12:00:00",
    "2016-05-01 22:00:00",
    "2016-05-01 10:00:00",
    "2016-05-01 08:30:00",
    "2016-05-01 12:00:00",
    "2016-05-01 16:00:00",
    "2016-05-01 20:00:00",
    NA,
    "2016-05-01 14:00:00"
  ),
  group = c(rep("lib", 2), rep("gym", 3), rep("pool", 5), NA),
  subgroup = c("A", "A", "B", "C", "C", "D", "D", "E", "E", "E", NA),
  type = c(rep("range", 9), "point", "background")
)

groups <- data.frame(id = c("lib", "gym", "pool"),
                     content = c("Library", "Gym", "Pool"))

timevis(
  data = dataGroups,
  groups = groups,
  options = list(editable = TRUE, stack = FALSE)
)
Run Code Online (Sandbox Code Playgroud)

我不知道如何在最终时间表中包含子组.我相信可能有可能使用setGroups或包含一些选项htmlwidgets::JS().我正在尝试使用第二个选项在文档中的示例,它似乎不起作用:

timevis(
  data.frame(
    id = 1,
    content = "double click anywhere<br>in the timeline<br>to add an item",
    start = "2016-01-01"
  ),
  options = list(
    editable = TRUE,
    onAdd = htmlwidgets::JS(
      'function(item, callback) {
      item.content = "Hello!<br/>" + item.content;
      timevis 19
      callback(item);
      }'
    )
  )
)
Run Code Online (Sandbox Code Playgroud)

任何包括子组的时间线的例子都将受到赞赏.

如果此功能无法使用,R是否有其他可用选项?

Tee*_*Kea 2

我想您可能将subGroupsnestedGroups混淆了。子组用于显示同一类别内不同级别的事件。如果您将subgroup属性更改为:

subgroup = c("A", "A", "B", "C", "B", "D", "D", "F", "E", "F", NA)
Run Code Online (Sandbox Code Playgroud)

您将能够看到(在下面的时间线中):

  • 图书馆的一个子组 ( A) (您会注意到事件位于同一水平级别)
  • 健身房的两个子组 ( B& C) (您会注意到事件分布在两个水平级别)

  • 的三个子组(DE、 & F)(您会注意到事件分布在三个水平级别)

带子组的 TimeVis

您提供的链接包含使用 Javascript 版本生成的时间线timvis,该时间线支持在时间线中包含嵌套组。如果您打开该页面的源代码,您将能够看到它是如何实现的。

希望这可以帮助。