2017-07-20 9 views
0

extrahieren Ich habe eine harte Zeit mit Networkd3-Paket in Shiny arbeiten. Ich habe ein Diagramm gezeichnet und möchte Knotendaten auf reaktive Weise zurück zu glänzen, um mehr Informationen über einen bestimmten Knoten zu visualisieren. ZB Stern-Graph mit Mittelpunkt Knoten "Vater" und andere "Son1" ... "SonN". Wenn ich auf den Son-Knoten klicke, möchte ich auf den Namen "Son1" in shiny zugreifen können, um Informationen aus einem Datenrahmen innerhalb von shiny zu extrahieren und zusätzliche Informationen zu visualisieren (z. B. Job, Alter usw.). konnte ich clickAction zeigen beispielsweise eine Meldung auf dem Bildschirm verwenden:Knotendaten von Netzwerkd3 zu einer reaktiven Variablen in glänzend

forceNetwork(....., clickAction= 'alert(d.name)') 

aber ich weiß nicht, wie diese d.name Wert in glänzend zurück zu bekommen, also kann ich es weiter verwenden und dass ich Erhalte keinen Fehler, wenn er glänzend gestartet wird, da der d.name nicht vom Begnen existiert (vielleicht beobachte die Funktion hier?) Ich benötige grundsätzlich ein Äquivalent des DT-Pakets input$table_rows_selected.

Antwort

0

Hier ist ein wirklich rau, aber die Arbeit, Beispiel eines networkD3forceNetwork Plot Wert auf Klick (mit clickAction = 'Shiny.onInputChange("id", d.name)') zurückkehrt, die dann mit diesem Namen verwendet wird, um einen Datenrahmen angezeigt werden soll.

library(shiny) 
library(networkD3) 

links <- read.table(header = T, text = ' 
source target value 
0 1 1 
0 2 1 
') 

nodes <- read.table(header = T, text = ' 
name group 
dad 1 
son1 1 
son2 1 
') 

son1 <- read.table(text = ' 
name John 
age 18 
') 

son2 <- read.table(text = ' 
name Mark 
age 14 
') 

ui <- shinyUI(fluidPage(
    fluidRow(
     column(4, forceNetworkOutput("force")), 
     column(4, DT::dataTableOutput("table")) 
    ) 
)) 

server <- shinyServer(function(input, output) { 

    output$force <- renderForceNetwork({ 
    forceNetwork(Links = links, Nodes = nodes, Source = "source", 
       Target = "target", Value = "value", NodeID = "name", 
       Group = "group", opacity = 1, opacityNoHover = 1, 
       clickAction = 'Shiny.onInputChange("id", d.name)') 
    }) 

    output$table <- DT::renderDataTable(DT::datatable(get(input$id))) 

}) 

shinyApp(ui = ui, server = server) 
+0

Funktioniert perfekt, vielen Dank! Jede Chance, die Sie mir in Richtung einer Dokumentation oder einer Ressource in Bezug auf ClickAction-Funktionen, die kompatibel mit glänzend? Ich würde gerne mehr Möglichkeiten erkunden. Danke noch einmal! –

+0

Ich bin einer der Betreuer von NetworkD3, aber nicht viel von einem Shiny-Benutzer, also habe ich keinen guten Vorschlag für Sie. Beachten Sie jedoch, dass die Shiny.onInputChange() - Funktion einem Objekt, auf das in R zugegriffen werden kann, einfach einen Wert zuweist, so dass die meisten Möglichkeiten wahrscheinlich mit denen vertraut sind, mit denen Sie bereits vertraut sind. –

Verwandte Themen