2017-09-21 3 views
0

ich eine glänzende App haben, in dem ich eine Netzwerkgraphen gemacht haben mit ggraph, etwas Ähnliches wie die App unter:verknüpft Bürsten Verwendung mit einem Netzwerkgraphen von ggraph in einer glänzenden App

library(ggraph) 
library(igraph) 
library(shiny) 

ui <- fluidPage(
    plotOutput("plot", brush = brushOpts(id = "plot_brush")) 
) 

server <- function(input, output) { 
    graph <- graph_from_data_frame(highschool) 

    output$plot <- renderPlot({ 
    ggraph(graph) + 
     geom_edge_link(aes(colour = factor(year))) + 
     geom_node_point() 
    }) 

    observe(print(
    brushedPoints(as_data_frame(graph, what = "vertices"), input$plot_brush) 
     ) 
    ) 
} 

shinyApp(ui, server) 

Was ich bin Wenn Sie ein Diagramm anklicken und ziehen, sodass einige Knoten erfasst werden, kann ich weitere Informationen zu diesen erfassten Punkten untersuchen. Fürs Erste verwende ich nur observe({print()}), damit ich in der Konsole sehen kann, was gefangen wird.

Mein Problem, wenn ich einen Bereich in der App auswähle, bekomme ich 0 Zeilen in der Konsole zurückgegeben, egal wie viele Knoten in dem ausgewählten Bereich enthalten sind. Wie kann ich die Knoten zurückgeben, die in dem ausgewählten Bereich enthalten sind?

Antwort

0

This response zeigte mir den Weg:

library(ggraph) 
library(igraph) 
library(shiny) 
library(dplyr) 

ui <- fluidPage(
    plotOutput("plot", brush = brushOpts(id = "plot_brush")) 
) 

server <- function(input, output) { 
    graph2 <- graph_from_data_frame(highschool) 

    set.seed(2017) 
    p <- ggraph(graph2, layout = "nicely") + 
    geom_edge_link() + 
    geom_node_point() 

    plot_df <- ggplot_build(p) 

    coords <- plot_df$data[[2]] 

    output$plot <- renderPlot(p) 

    coords_filt <- reactive({ 
    if (is.null(input$plot_brush$xmin)){ 
     coords 
    } else { 
    filter(coords, x >= input$plot_brush$xmin, 
      x <= input$plot_brush$xmax, 
      y >= input$plot_brush$ymin, 
      y <= input$plot_brush$ymax) 
    } 
    }) 

    observe(print(
    coords_filt() 
) 
) 

} 

shinyApp(ui, server) 
Verwandte Themen