Подтвердить что ты не робот

Используйте D3 и Shiny для реализации `ident()` в R

Я спросил вопрос о том, как динамически строить график в соответствии с пользовательскими взаимодействиями, решение которых хорошо работает на моей машине.

Теперь я хочу сделать он-лайн версию и разместить ее с Shiny.

Я попытался поместить код в server.R и вызвать функцию iden() внутри reactivePlot(), но часть identify() не вступает в силу.

Итак, какие-либо намеки на эту задачу?

4b9b3361

Ответ 1

Попробуйте элемент галереи. Он использует ggvis для достижения этой цели в блестящей форме. В случае исчезновения галереи, вот какой-то минимальный код, который создаст всплывающую подсказку, подобную identify(), используя ggvis.

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

И, более полный, но все же минимальный пример:

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")
  }

)