使用D3和Shiny在R中实现`identify()`

ziy*_*ang 57 javascript r d3.js shiny

我问了一个关于如何根据用户交互动态绘制的问题,其解决方案在我的机器上运行良好.

现在我想制作一个在线版本并用Shiny托管它.

我试图将代码放入server.R并调用iden()里面的函数reactivePlot(),但部分identify()没有生效.

那么,有关这项任务的任何提示吗?

mgr*_*ebe 2

试试这个画廊项目。 它使用ggvis在shiny中完成这个目标。万一图库消失,这里有一些最小的代码,将生成一个工具提示,类似于identify()使用 ggvis。

require(ggvis)
mtcars$model<-rownames(mtcars)
mtcars %>% ggvis(~wt, ~mpg,key:=~model) %>% 
  layer_points() %>% 
  add_tooltip(function(df) df$model)
Run Code Online (Sandbox Code Playgroud)

并且,一个更完整但仍然最小的示例:

require(shiny)
require(ggvis)
mtcars$model<-rownames(mtcars)

shinyApp(
  ui = fluidPage(
    sidebarLayout(
      sidebarPanel(h2("GGVis to Identify Points")),
      mainPanel(ggvisOutput("carsplot"))
    )
  ), 
  server = function(input, output) {
    vis <- reactive({ 
      mtcars %>% ggvis(~wt, ~mpg,key:=~model) %>% 
        layer_points() %>% 
        add_tooltip(function(df) df$model)
    })
    vis %>% bind_shiny("carsplot")
  }

)
Run Code Online (Sandbox Code Playgroud)