将节点信息从networkd3提取到闪亮的反应变量

时间:2017-07-20 14:27:15

标签: javascript r shiny networkd3

我很难在Shiny中使用networkd3软件包。 我绘制了一个图表,并希望以反应方式将节点信息提取回闪亮,以显示有关某个节点的更多信息。 例如,具有中心节点“父亲”和其他“Son1”...“SonN”的星图。点击Son节点后,我希望能够以闪亮的方式访问“Son1”名称,从闪亮的数据框中提取信息,并可视化其他信息(例如工作,年龄等)。 我能够使用clickAction例如在屏幕上显示消息:

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

但我不知道如何将这个d.name值恢复为闪亮,所以我可以进一步使用它,并且在开始运行闪亮时我没有收到错误,因为d.name不存在于求助(也许在这里观察函数?)我基本上需要一个等价的DT包input$table_rows_selected

1 个答案:

答案 0 :(得分:0)

这里有一个非常粗糙,但有效的例子,networkD3 forceNetwork图表返回点击值(使用clickAction = 'Shiny.onInputChange("id", d.name)'),然后用于显示数据这个名字的框架。

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)