【问题标题】:visNetwork not displaying in panel divvisNetwork 未显示在面板 div 中
【发布时间】:2017-10-27 13:58:07
【问题描述】:

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

【问题讨论】:

  • 你到底想用panel_div()做什么?如果您查看文档,您将看到:panel_div(class_type, panel_title, content) 您尝试将网络作为content 参数传递,其描述为:“类字符的[n] 对象,指示文本内容”。所以你的输出会被转换成类型字符,不会显示出来,...
  • 不,我认为这只是一个错误:)。但很可能它没有经过测试 - 即不在测试矩阵中。

标签: html r shiny graph-visualization visnetwork


【解决方案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)

这就是它的样子:

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

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

【讨论】:

  • 我今天早上在工作中试用了它,效果非常棒!感谢您快速而完整的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-09
  • 1970-01-01
  • 1970-01-01
  • 2018-04-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多