2016-11-24 8 views
1

Ich habe ein Scatterd3 (Paket Scatterd3) Plot in einer glänzenden App und ich kann nicht herausfinden, wie man Informationen nach dem Klicken auf einen geplotteten Punkt zurück zu glänzend obwohl. Diese Website scheint es zu erklären, aber ich kann es einfach nicht bekommen: https://cran.r-project.org/web/packages/scatterD3/vignettes/introduction.html#javascript-callback-on-clicking-pointR Shiny get click Informationen von scatterD3

scatterD3(data = mtcars, x = wt, y = mpg, 
    click_callback = "function(id, index) { 
    if(id && typeof(Shiny) != 'undefined') { 
     Shiny.onInputChange(id + '_selected', index); 
    } 
}") 

Wissen Sie, wo die Informationen auf Klick gespeichert? Ich nahm an, dass ich es in glänzendem gui mit etwas so nennen könnte:

Irgendwelche Ideen? Cheers

Antwort

3

Die JavaScript-Funktion click_callback wird mit zwei Argumenten aufgerufen: der Plot-Unique-ID und dem angeklickten Punktindex. Mithilfe von Shiny.onInputChange können Sie einen Shiny input-Steckplatz an einen Wert binden und die Daten abrufen.

Zum Beispiel mit der folgenden click_callback Funktion:

scatterD3(data = mtcars, x = wt, y = mpg, 
    click_callback = "function(id, index) { 
    if(id && typeof(Shiny) != 'undefined') { 
     Shiny.onInputChange('selected_point', index); 
    } 
}") 

Sie sollten in der Lage sein, etwas zu tun:

verbatimTextOutput(paste("Index of clicked point : ", input$selected_point)) 

Dies ist ein ganz letztes Merkmal in scatterD3, so im Fall von Bug oder fehlende Funktion, zögern Sie nicht zu open an issue on Github.

+0

Danke, das mir sortiert habe, werde ich füge einige Details zu einer Antwort auf meine Frage hinzu – Mark

1

jubas Antwort hat sehr geholfen, siehe oben. Ich wollte ein numericInput Feld aktualisieren, so ging darüber wie dies in meinem Server:

observe({ 
    click_index <- input$selected_point 
    updateNumericInput(session, "numeric1", value=click_index) 
}) 

Wo ist mein numericInput in meinem gui war:

numericInput("numeric1", "Clicked point index :", value=0)