1

我已经开始使用 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)
4

1 回答 1

2

这是shinyJS版本 1.1.0 中的一个错误。我找到了一个(尴尬的)解决方法,并将其作为一个错误发布,htmlwidgetsJoe 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)

这就是它的样子:

在此处输入图像描述

更新:尝试使用另一个htmlwidget包 ( sigma) 并得到相同的行为。因此将此作为htmlwidget错误提交:panel_div htmlwidget 问题

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

于 2017-05-27T00:01:18.723 回答