您好我正在尝试使用R的networkD3包中的forcenetwork功能。
我遇到了clickAction问题。 clickAction的目的是打开一个新窗口以显示本地HTML文件的内容。但现在,可以添加像http://www.google.com这样的网站网址。但我开始坚持打开本地HTML文件。
当我添加本地HTML文件的方向时,它不起作用并显示“Not Found”。
我试图将所有HTML文件放在相对路径的www文件中。但它不起作用。
我想知道是否有任何方法可以在clickAction中显示本地HTML文件? 谢谢!
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)
答案 0 :(得分:0)
在运行shinyApp
之前,使用addResourcePath('sub_dir', 'www')
功能指定闪亮的可访问目录,例如hyperlink = c("sub_dir/docname.html", "http://yahoo.com")
然后确保您对本地文件的超链接适合于此,例如addResourcePath
并确保要链接到的文件位于您使用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)
的第二个参数指定的目录中(您可以在R中指定相对于当前工作目录的目录,或者使用有效的绝对路径)
所以它可能看起来像......
src/main/resources/config.yml