将networkD3中的节点上的clickAction链接到本地​​HTML文件 [英] linking clickAction on a node in networkD3 to a local HTML file

查看:123
本文介绍了将networkD3中的节点上的clickAction链接到本地​​HTML文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试R中的networkD3软件包中的forcenetwork功能.

Hi I am trying forcenetwork function in networkD3 package in R.

我被clickAction卡住了. clickAction的目的是打开一个新窗口以显示本地HTML文件的内容.但是现在,可以添加 http://www.google.com 之类的网站URL.但是我被困在打开本地HTML文件中.

I get stuck with clickAction. The aim of clickAction is to open a new window to show the content of a local HTML file. But now, It is ok to add a website URL like http://www.google.com. But I get stuck with opening local HTML file.

当我添加本地HTML文件的方向时,它不起作用并显示未找到".

When I add the direction of local HTML file, it doesn't work and show "Not Found".

我试图将所有HTML文件放在相对路径下的www文件中.但这不起作用.

I have tried to put all HTML files in www file in relative path. But it doesn't work.

我想知道是否有任何方法可以在clickAction中显示本地HTML文件? 谢谢!

I was wondering if there is any way to show the local HTML file in clickAction? Thanks!

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("file:///C:/user/docname.html", "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)

推荐答案

在运行shinyApp之前,使用addResourcePath函数分配闪亮的可访问目录,例如addResourcePath('sub_dir', 'www')

Use the addResourcePath function to assign a shiny accessible directory before running shinyApp, e.g. addResourcePath('sub_dir', 'www')

然后确保您指向本地文件的超链接与此相对应,例如hyperlink = c("sub_dir/docname.html", "http://yahoo.com")

then make sure your hyperlinks to local files are appropriate to that, e.g. hyperlink = c("sub_dir/docname.html", "http://yahoo.com")

,并确保要链接的文件位于使用addResourcePath的第二个参数指定的目录中(您可以相对于R中的当前工作目录指定目录,也可以使用有效的绝对目录路径)

and make sure the file/s you want to link to are in the directory you specified with the 2nd argument of addResourcePath (you can specify the directory either relative to your current working directory in R, or with a valid absolute path)

所以它看起来像...

so it might look like...

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("sub_dir/docname.html", "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
  })
}
addResourcePath('sub_dir', 'www')
shinyApp(ui = ui, server = server)

这篇关于将networkD3中的节点上的clickAction链接到本地​​HTML文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆