2012-12-08 18 views
53

我询问a question如何根据用户交互进行动态绘图,其解决方案 在我的机器上工作得很好。使用D3和Shiny在R中实现`identify()`

现在我想制作一个在线版本并将其与Shiny一起托管。

我试图把代码放到server.R并调用内部reactivePlot()iden()功能,但identify()的部分不生效。

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

+0

你试试[rCharts(https://github.com/ramnathv/rCharts)包创建JavaScript“图“从R?这很容易嵌入到Shiny App中。 –

+0

@StéphaneLaurent我已经注意到这个包,但是这个问题在它的发明之前就被问到了。 – ziyuang

+0

我很确定我昨天在[Timely Portfolio blog](http://timelyportfolio.blogspot.fr/)上看到了一个互动ggplot,但我今天一直无法找到它。 –

回答

1

试试这个gallery item.它使用ggvis来实现这个闪亮的目标。 如果图库消失,下面是一些最小的代码,它将使用ggvis生成类似于identify()的工具提示。

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

)