2017-07-20 5 views
0

Shinyのnetworkd3パッケージで作業するのに苦労しています。 私はグラフをプロットしており、あるノードに関するより多くの情報を視覚化するために、ノード情報を光っているように反応的に取り戻したいと考えています。 例:中心ノード「父」と他の「Son1」...「SonN」を持つスターグラフ。 Sonノードをクリックすると、shinyの "Son1"という名前にアクセスして、光沢のあるデータフレームから情報を抽出し、追加情報(例えば、仕事、年齢など)を視覚化したいと考えています。 私は、画面上にメッセージを表示する例えばにclickActionを使用することができました:ネットワークのノード情報を光沢のある反応変数に抽出

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

が、私は戻ってピカピカにこのd.name値を取得する方法がわからないので、私はさらにそれを使用して、私そのことができますd.nameが最初から存在しないので(おそらくここの関数を観測していますか?)、私は基本的にDTパッケージinput$table_rows_selectedと同等のものが必要です。

答えて

0

networkD3forceNetworkプロットは、クリックすると値を返す(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) 
+0

完璧に動作します、ありがとうございます! あなたは、光沢と互換性のあるclickAction関数に関するドキュメントやリソースに私を導くことができますか?私はもっ​​と可能性を探求したいと思う。再度、感謝します! –

+0

私はnetworkD3のメンテナーの一人ですが、光沢のあるユーザーではないので、あなたには良い提案はありません。しかし、Shiny.onInputChange()関数は、Rでアクセスできるオブジェクトに値を代入するだけなので、ほとんどの可能性はおそらくあなたがすでによく知っているものです。 –

関連する問題