Выберите несколько узлов в силовом сетевом графике и отобразите имена - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть граф сил в r блестящий (библиотека (networkD3)), и я хотел бы сохранить имя узла, когда я выбираю его и когда я выбираю несколько узлов, чтобы использовать выбранные узлы в дальнейшем анализе?

1.Это функция принудительной сети внутри блестящего сервера:

library(shiny)
library(networkD3)
library(DT)
library(SPARQL)
library(collapsibleTree)
library(dplyr)

endpoint <- 'http://statistics.gov.scot/sparql'

query <- 'PREFIX qb: <http://purl.org/linked-data/cube#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX sdmx: <http://purl.org/linked-data/sdmx/2009/concept#>
PREFIX data: <http://statistics.gov.scot/data/>
PREFIX sdmxd: <http://purl.org/linked-data/sdmx/2009/dimension#>
PREFIX mp: <http://statistics.gov.scot/def/measure-properties/>
PREFIX stat: <http://statistics.data.gov.uk/def/statistical-entity#>
SELECT ?areaname ?nratio ?yearname ?areatypename WHERE {
?indicator qb:dataSet data:alcohol-related-discharge ;
             sdmxd:refArea ?area ;
             sdmxd:refPeriod ?year ;
             mp:ratio ?nratio .
?year rdfs:label ?yearname .

?area stat:code ?areatype ;
      rdfs:label ?areaname .
?areatype rdfs:label ?areatypename .
}'

# reject bad inputs
#if(!is.data.frame(df)) stop("df must be a data frame")



shinyServer(function(input, output, session) {
  abc <- reactive({
    abc <- input$endpoint    
  }) 
  output$endpoint  <- renderText({ 
    endpoint
  })
  output$query <- renderText({ 
    query
  }) 

  qd <- SPARQL::SPARQL(url=endpoint, query=query)$results
  summary(qd)
  newdata <- qd[1:100,]

  # Create fake data
  src <- c("dataset")
  target <- c(colnames(qd))
  networkData <- data.frame(src, target,stringsAsFactors = FALSE)


  output$summary <- renderPrint({
    summary(qd)
  })

  output$str <- renderPrint({
    str(qd)
  })



  output$force <- renderForceNetwork({
    # make a nodes data frame out of all unique nodes in networkData
    nodes <- data.frame(name = unique(c(networkData$src, networkData$target)))
    # make a group , value = "http://statistics.gov.scot/sparql"variable where nodes in networkData$src are identified
    nodes$group <- nodes$name %in% networkData$src
    # make a links data frame using the indexes (0-based) of nodes in 'nodes'
    links <- data.frame(source = match(networkData$src, nodes$name) - 1,
                        target = match(networkData$target, nodes$name) - 1)


    fn<-forceNetwork(Links = links, Nodes = nodes, Source = "source",
                     Target = "target", NodeID ="name", Group = "group",
                     opacity = input$opacity, opacityNoHover = 1, fontSize = 7,
                     fontFamily = "serif", linkDistance = 300,zoom = TRUE)

    fn$x$nodes$hyperlink <- paste0(
      'https://www.facebook.com/search/top/?q=',
      nodes$name
    )

    #   we can define a click action to open the hyperlink for each node in a new window
    fn$x$options$clickAction = 'window.open(d.hyperlink)'
    fn
  })

Цель: сначала

  • , описать набор данныхатрибуты (см. изображение
  • при выборе атрибута на графике отображают имя для дальнейшего анализа (возможно, сохраните имя в переменной)
  • возможность выбрать несколько узлов и выполнить некоторый анализ, используя тольковыделенные узлы
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...