2012-12-08 7 views
53

Ho chiesto a question su come stampare dinamicamente in base alle interazioni dell'utente, la cui soluzione funziona abbastanza bene sulla mia macchina.Utilizzare D3 e Shiny per implementare `identifica()` in R

Ora voglio creare una versione online e ospitarla con Shiny.

ho cercato di inserire il codice in server.R e richiamare la funzione iden() all'interno reactivePlot(), ma la parte di identify() non ha effetto.

Quindi, qualche suggerimento su questa attività?

+0

Hai provato il pacchetto [rCharts] (https://github.com/ramnathv/rCharts) per creare Javascript "grafici "da R? Questo è facilmente integrabile in un'app brillante. –

+0

@ StéphaneLaurent Ho notato questo pacchetto ma questa domanda viene posta prima della sua invenzione. – ziyuang

+0

Sono abbastanza sicuro di aver visto ieri un ggplot interattivo su [Timely Portfolio blog] (http://timelyportfolio.blogspot.fr/) ma non sono riuscito a trovarlo di nuovo oggi. –

risposta

1

Prova questo gallery item. Usa ggvis per raggiungere questo obiettivo in brillante. Nel caso in cui la galleria scompaia, ecco un codice minimale che produrrà un suggerimento, simile a identify(), usando ggvis.

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

E, una più completa, ma ancora minima esempio:

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

)