2012-12-08 17 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") 
    } 

)