2017-03-28 3 views
1

rのnetworkD3パッケージでforceNetwork()関数を使用して外部Webサイトへのリンクとしてノードを使用する方法がありますが、光沢のあるアプリに組み込まれていますか?光沢のあるclickActionを使用してネットワークD3のノードをリンクする

私はこの答え

hereを見つけたが、私は光沢のあるアプリとしてそれを実行しようとしているとき、それは働いていません。 は、ここに私のコードです:

library(shiny) 
library(networkD3) 

source =c(0,0,3,3,3,7,7,10,9,7,1,6,4,5,8,2) 
target = c(1,2,4,5,6,8,9,11,12,10,9,10,8,9,11,8) 
value = c(10,10,10,10,10,10,10,20,20,10,2,2,2,10,20,15) 
MisLinks = data.frame(source,target,value) 


name = c("[Category]Genre", "CCG", "Action", [Category]Art","Realistic Art", "Dark Art", "Cartoony", "[Category]Time demend", "Mid-Core", "Hard-Core", "Casual", "Install", "Not Install") 
group = c(1,2,2,3,4,4,4,5,6,6,6,8,8) 
size = c(50,20,20,50,20,20,20,50,20,20,20,250,250) 
hyperlink = c("http://google.com", "http://yahoo.com", "http://google.com", "http://yahoo.com", "http://google.com", "http://yahoo.com", "http://google.com", "http://yahoo.com", "http://google.com", "http://yahoo.com", "http://google.com", "http://yahoo.com", "http://yahoo.com") 
MisNodes = data.frame(name, group, size, hyperlink) 



ui = fluidPage(
titlePanel("Testing app"), 

sidebarLayout(
sidebarPanel(
    sliderInput("opacity", "Test", 0.6, min = 0.1, max = 1, step = .1) 
), 
mainPanel(
    tabsetPanel(
    tabPanel("Force Network", forceNetworkOutput("force")) 
) 
) 
) 
) 

Myclickaction = "window.open(d.name, '_blank')" 

server = function(input,output) { 

output$force = renderForceNetwork({ 
forceNetwork(Links = MisLinks, Nodes = MisNodes, 
      Source = "source", Target = "target", charge = -150, 
      legend = TRUE, opacityNoHover = 1, Nodesize = "size", 
      Value = "value", NodeID = "name", 
      Group = "group", linkWidth = 2, clickAction = Myclickaction, 
      opacity = 0.9, colourScale =JS("d3.scaleOrdinal(d3.schemeCategory20);"), 
      zoom=t) 


}) 
} 
shinyApp(ui = ui, server = server) 

望ましい結果:あなたはノードをクリックすると、発行され光沢のあるアプリ にクリックしたノードに応じて、特定のウェブページへのブラウザで開いて新しいウィンドウを取得します!

答えて

1
  1. あなたはこのMyclickaction = "window.open(d.name, '_blank')"は、Myclickaction = "window.open(d.hyperlink, '_blank')"ライン38上の
  2. 33行に保存しなければならないラインで44
  3. zoom=t代わりにzoom=Tを渡しているライン10
  4. [Category]Art前に引用符が欠落していますオブジェクトへのforceNetworkの出力は、forceNetworkコール(行45)後にfn <- forceNetwork(Links = MisLinks, Nodes = MisNodes,
  5. のように後でfn$x$nodes$hyperlink <- hyperlinkを追加します。 Dその次の行に問題はこのトリックが正式にサポートされていないためforceNetwork機能が実行され、ノード・オブジェクト内のハイパーリンクがforceNetworkによって削除されます後にハイパーリンクを追加する必要があるということであるfn

追加関数。

別のRStudioでリンクを開くので、そのように述べられ、変更を加えたいくつかの書式の修正との完全なコードは次のようになります...

library(shiny) 
library(networkD3) 

source =c(0,0,3,3,3,7,7,10,9,7,1,6,4,5,8,2) 
target = c(1,2,4,5,6,8,9,11,12,10,9,10,8,9,11,8) 
value = c(10,10,10,10,10,10,10,20,20,10,2,2,2,10,20,15) 
MisLinks = data.frame(source,target,value) 

name = c("[Category]Genre", "CCG", "Action", "[Category]Art","Realistic Art", "Dark Art", "Cartoony", "[Category]Time demend", "Mid-Core", "Hard-Core", "Casual", "Install", "Not Install") 
group = c(1,2,2,3,4,4,4,5,6,6,6,8,8) 
size = c(50,20,20,50,20,20,20,50,20,20,20,250,250) 
hyperlink = c("http://google.com", "http://yahoo.com", "http://google.com", "http://yahoo.com", "http://google.com", "http://yahoo.com", "http://google.com", "http://yahoo.com", "http://google.com", "http://yahoo.com", "http://google.com", "http://yahoo.com", "http://yahoo.com") 
MisNodes = data.frame(name, group, size, hyperlink) 

ui = fluidPage(
    titlePanel("Testing app"), 
    sidebarLayout(
    sidebarPanel(
     sliderInput("opacity", "Test", 0.6, min = 0.1, max = 1, step = .1) 
    ), 
    mainPanel(
     tabsetPanel(
     tabPanel("Force Network", forceNetworkOutput("force")) 
    ) 
    ) 
) 
) 

Myclickaction = "window.open(d.hyperlink, '_blank')" 

server = function(input,output) { 
    output$force = renderForceNetwork({ 
    fn <- forceNetwork(Links = MisLinks, Nodes = MisNodes, 
     Source = "source", Target = "target", charge = -150, 
     legend = TRUE, opacityNoHover = 1, Nodesize = "size", 
     Value = "value", NodeID = "name", 
     Group = "group", linkWidth = 2, clickAction = Myclickaction, 
     opacity = 0.9, colourScale =JS("d3.scaleOrdinal(d3.schemeCategory20);"), 
     zoom=TRUE) 
    fn$x$nodes$hyperlink <- hyperlink 
    fn 
    }) 
} 
shinyApp(ui = ui, server = server) 

また、あなたは、ブラウザで光沢のあるアプリを開く必要がありますビューアーウィンドウが機能していないようです。

+0

ねえ男!この問題を解決してくれてありがとうございました。私はすべての構文エラーをstackoverflowのためにフォーマットしようとしている間、私はこの行を書いた: Myclickaction = "window.open(d.name、 '_blank')" それは既知の変数を渡すことができるかどうかを確認する名前、それはうまくいきましたので、forcenetworkはデフォルトで他の変数を認識しないので、私はそれを推測しました。 –

関連する問題