Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用中的clickAction将networkD3中的节点链接到网站_Javascript_R_Shiny_Rstudio_Networkd3 - Fatal编程技术网

Javascript 使用中的clickAction将networkD3中的节点链接到网站

Javascript 使用中的clickAction将networkD3中的节点链接到网站,javascript,r,shiny,rstudio,networkd3,Javascript,R,Shiny,Rstudio,Networkd3,有没有一种方法可以使用r中networkD3包中的函数forceNetwork()将节点用作指向外部网站的链接,但将其合并到shiny应用程序中 我找到了这个答案 但当我试图将它作为一个闪亮的应用程序运行时,它就不起作用了。 这是我的密码: 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) v

有没有一种方法可以使用r中networkD3包中的函数forceNetwork()将节点用作指向外部网站的链接,但将其合并到shiny应用程序中

我找到了这个答案

但当我试图将它作为一个闪亮的应用程序运行时,它就不起作用了。 这是我的密码:

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)
期望的结果:在已发布的应用程序中单击节点时 您将在浏览器中打开一个新窗口,该窗口指向特定的网页,具体取决于所单击的节点

  • 第10行的
    [Category]Art
    之前缺少一个报价
  • 您在第44行传递的是
    zoom=t
    ,而不是
    zoom=t
  • 这个
    Myclickaction=“window.open(d.name,'.'u blank')”
    应该是第33行的
    Myclickaction=“window.open(d.hyperlink,'.'u blank')”

  • 在第38行,将
    forceNetwork
    的输出保存到一个对象,以便以后可以修改它,如
    fn Hey man!非常感谢,这解决了问题。我在尝试为stackoverflow设置格式时犯了所有语法错误,我写了这行:Myclickaction=“window.open(d.name,'.'u blank')”,看看它是否可以传递诸如name之类的已知变量,这很有效,所以我猜这是因为forcenetwork默认情况下无法识别其他变量,但该死的家伙,你救了我,再次感谢!使用此方法,我们可以将不同的形状(矩形、三角形、正方形)添加到节点,而不是添加默认的圆。
    
    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)