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

Posted

技术标签:

【中文标题】使用 D3 和 Shiny 在 R 中实现 `identify()`【英文标题】:Use D3 and Shiny to implement `identify()` in R 【发布时间】:2012-11-26 19:05:03 【问题描述】:

我问a question如何根据用户交互动态绘图,谁的解决方案 在我的机器上运行良好。

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

我试过把代码放到server.R里面,调用reactivePlot()里面的iden()函数,但是identify()的部分没有生效。

那么,关于这个任务有什么提示吗?

【问题讨论】:

您是否尝试使用 rCharts 包从 R 创建 javascript“图表”?这很容易嵌入到闪亮的应用程序中。 @StéphaneLaurent 我注意到了这个包,但是这个问题是在它发明之前提出的。 我很确定我昨天在 Timely Portfolio blog 上看到了一个交互式 ggplot,但我今天再也找不到它了。 【参考方案1】:

试试这个gallery item. 它使用 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")
  

)

【讨论】:

以上是关于使用 D3 和 Shiny 在 R 中实现 `identify()`的主要内容,如果未能解决你的问题,请参考以下文章

在 R Shiny 中实现 CRUD 工作流的最简洁方法是啥?

如何从R Shiny的联系表发送电子邮件

在 R Shiny 中闪烁加载文本

如何在 R Shiny 中创建具有复杂标题的数据表?

r2d3 + Shiny:无法在 D3 中渲染本地图像,尽管能够使用 URL 渲染图像

部署 R Shiny 应用程序时加载包时出现问题