在Shiny for R中设置Dygraph的交互模型

时间:2015-03-17 11:47:49

标签: r shiny dygraphs user-interaction

我希望将“自定义互动模式”下http://dygraphs.com/gallery/#g/interaction下看到的自定义互动添加到我的Shiny网络应用中。

据我了解,这需要将一些JS附加到页面并在图表上设置交互模型:

interactionModel : { 'mousedown' : downV3, 'mousemove' : moveV3, 'mouseup' : upV3, 'click' : clickV3, 'dblclick' : dblClickV3, 'mousewheel' : scrollV3 }

但是,interactionModel似乎没有在R侧的dyOptions函数中列为参数。

有办法解决这个问题吗?

更新:

查看dyOptions的来源,似乎可以直接修改选项:

g <- dyGraph(series)

g$x$attr$option <- "Value"

但是,在此设置interactionModel似乎不起作用。

请参阅:https://github.com/rstudio/dygraphs/blob/master/R/options.R

更新:

您确实可以使用以下方式设置选项:

g$x$attrs$option <- "Value" # Note that it is "attrs", not "attr"

这可以用来关闭交互模式:

graph$x$attrs$interactionModel <- "{}"

剩下的问题是通过JSON将JS函数引用传递给页面。

1 个答案:

答案 0 :(得分:1)

您可以使用JS函数将JSON上的JavaScript传递给客户端。

在ui.R:

tags$head(tags$script(src="interaction.js"))

在server.R中:

g <- dygraph(series(), main = "Graph", xlab = "Date", ylab = "Amount") %>%
    dySeries(label = "X")

g$x$attrs$interactionModel <- list(
    mousedown = JS("downV3"),
    mousemove = JS("moveV3"),
    mouseup = JS("upV3"),
    click = JS("clickV3"),
    dblclick = JS("dblClickV3"),
    mousewheel = JS("scrollV3"))