visNetwork不在面板div中显示

时间:2017-05-26 15:47:39

标签: html r shiny graph-visualization visnetwork

我已经开始使用shinyLP制作html元素,并使用visNetwork制作网络图。我注意到visNetwork在放入井板或根本没有面板时显示正常。但是,放置在面板div中时,无论是使用shinyLP还是通过原始HTML,都不会显示。简单来说,我只显示不在面板中和在面板div中的代码差异。 是否有人知道如何让visNetwork出现在这种特定的容器类型中?我想使用这种容器类型,因为我希望保持我的CSS方式,而不是仅为这个容器更改内容。有人知道这个问题的原因吗?

当visNetworkOutput不在面板

中时,此方法有效
library(shinyLP)
library(visNetwork)

ui <- fluidPage(

visNetworkOutput("network")

)

server <- function(input, output) {

    output$network <- renderVisNetwork({
    # minimal example
        nodes <- data.frame(id = 1:3)
        edges <- data.frame(from = c(1,2), to = c(1,3))

        visNetwork(nodes, edges)
    })
}

shinyApp(ui, server)

当visNetworkOutput位于面板

中时,无法显示
ui <- fluidPage(

    panel_div("default", "", visNetworkOutput("network"))

)

server <- function(input, output) {

    output$network <- renderVisNetwork({
        # minimal example
        nodes <- data.frame(id = 1:3)
        edges <- data.frame(from = c(1,2), to = c(1,3))

        visNetwork(nodes, edges)
    })
}

shinyApp(ui, server)

1 个答案:

答案 0 :(得分:1)

这是shinyJS版本1.1.0中的错误。我找到了一个(笨拙的)解决方法并将其作为htmlwidgets中的错误发布,Joe Cheng看到了它,并在10分钟内给我一个解决方法。真棒...

以下是具有更好解决方法的代码(pandel_div的新定义):

library(shiny)
library(shinyLP)
library(visNetwork)

# override the currently broken definition in shinyLP version 1.1.0
panel_div <- function(class_type, panel_title, content) {
  div(class = sprintf("panel panel-%s", class_type),
      div(class = "panel-heading",
          h3(class = "panel-title", panel_title)
      ),
      div(class = "panel-body", content)
  )
}

ui <- fluidPage(
  panel_div("default", "panel1",visNetworkOutput("network")  )
)

server <- function(input, output) {

  output$network <- renderVisNetwork({ 
    # minimal network
    nodes <- data.frame(id = 1:3)
    edges <- data.frame(from = c(1,2), to = c(1,3))
    visNetwork(nodes,edges) 
  })

}
shinyApp(ui, server)

这就是看起来的样子:

enter image description here

更新:尝试使用另一个htmlwidget包(sigma)并获得相同的行为。因此将此归档为htmlwidget错误:panel_div htmlwidget issue

更新: JC将其识别为shinyJS错误。改变了我的解决方案以反映他的建议。