2016-10-06 1 views
1

Ich versuche, die Knoten-/Kantendaten aus meinem visNetwork-Diagramm zu erhalten. Ich verwende den Beispielcode, aber es funktioniert nicht. Ich versuche das mit Shiny zu machen. Mein Ziel ist es, die Knoten und Kanten Daten aus dem Netzwerk zu erhalten und dann in einer Tabelle anzuzeigen. Ich werde jede Hilfe sehr schätzen, die ich bekommen kann. Danke,Node- und Edge-Daten aus dem visNetwork-Diagramm abrufen

Hier ist mein Code:

require(shiny) 
require(visNetwork) 

server <- function(input, output) { 

    output$network_proxy_nodes <- renderVisNetwork({ 
    nodes <- data.frame(id = 1:3) 
    edges <- data.frame(from = c(1,2), to = c(1,3)) 

    visNetwork(nodes, edges) %>% visNodes(color = "green") 
    }) 


    output$edges_data_from_shiny <- renderPrint({ 
    if(!is.null(input$network_proxy_get_edges)){ 
     input$network_proxy_get_edges 
    } 
    }) 

    observe({ 
    input$getEdges 
    visNetworkProxy("network_proxy_get") %>% 
     visGetEdges() 
    }) 

    output$nodes_data_from_shiny <- renderPrint({ 
    if(!is.null(input$network_proxy_get_nodes)){ 
     input$network_proxy_get_nodes 
    } 
    }) 

    observe({ 
    input$getNodes 
    visNetworkProxy("network_proxy_get") %>% 
     visGetNodes() 
    }) 
} 

ui <- fluidPage(
    visNetworkOutput("network_proxy_nodes", height = "100%"), 
      verbatimTextOutput("edges_data_from_shiny "), 
      verbatimTextOutput("nodes_data_from_shiny"), 
      actionButton("getNodes", "Nodes"), 
      actionButton("getEdges", "Edges") 
) 

shinyApp(ui = ui, server = server) 

Antwort

2

Das Hauptproblem mit dem Code ist, dass der Name des Netzes output$network_proxy_nodes nicht überall gleich war.

Dies ist ein Arbeitsstück des Code Kanteninformationen zu erhalten und es im Klartext angezeigt werden, und Knoteninformationen und zeigt sie als Datentabelle zu erhalten:

require(shiny) 
require(visNetwork) 

server <- function(input, output, session) { 
    nodes <- data.frame(id = 1:3, 
         name = c("first", "second", "third"), 
         extra = c("info1", "info2", "info3")) 
    edges <- data.frame(from = c(1,2), to = c(1,3), id= 1:2) 

    output$network_proxy <- renderVisNetwork({ 
    visNetwork(nodes, edges) 
    }) 


    output$nodes_data_from_shiny <- renderDataTable({ 
    if(!is.null(input$network_proxy_nodes)){ 
     info <- data.frame(matrix(unlist(input$network_proxy_nodes), ncol = dim(nodes)[1], 
         byrow=T),stringsAsFactors=FALSE) 
     colnames(info) <- colnames(nodes) 
     info 
    } 
    }) 
    output$edges_data_from_shiny <- renderPrint({ 
    if(!is.null(input$network_proxy_edges)){ 
     input$network_proxy_edges 
    } 
    }) 

    observeEvent(input$getNodes,{ 
    visNetworkProxy("network_proxy") %>% 
     visGetNodes() 
    }) 

    observeEvent(input$getEdges, { 
    visNetworkProxy("network_proxy") %>% 
     visGetEdges() 
    }) 
} 

ui <- fluidPage(
    visNetworkOutput("network_proxy", height = "400px"), 
    verbatimTextOutput("edges_data_from_shiny"), 
    dataTableOutput("nodes_data_from_shiny"), 
    actionButton("getEdges", "Edges"), 
    actionButton("getNodes", "Nodes") 
) 

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

Vielen Dank! Ich konnte diesen Code zum Laufen bringen. Beste, SB – AquieJo

+0

Gern geschehen @AquieJo! Wenn es für Sie funktioniert, können Sie es als "die beste Antwort" akzeptieren (so dass es das grüne Häkchen auf der linken Seite der Antwort erscheint und andere Leute wissen, dass es Ihre Frage beantwortet). – xclotet

Verwandte Themen