首页 > 解决方案 > R Shiny visNetwork_2.1.0 中的错误与 visHierarchicalLayout 产生难以辨认的可视化?

问题描述

我正在更新一个闪亮的应用程序,并且得到了与过去截然不同的可视化输出。(为冗长的数据生成道歉 - 自动生成的集合不会复制问题。)以下代码R 4.1.1运行visNetwork_2.1.0

library(shiny)
library(visNetwork)

# generate data
nodesDf <- data.frame(id=as.character(c(1,3,4,6,8,9,13,15,16,20,21,23,24,25,27,
                                        28,29,30,33,35,36,37,39,40,41,44,45,46,
                                        48,50,51,53,57,58,60,61,62,65)),
                      label=as.character(c(1,3,4,6,8,9,13,15,16,20,21,23,24,25,27,
                                           28,29,30,33,35,36,37,39,40,41,44,45,46,
                                           48,50,51,53,57,58,60,61,62,65)))
edgesDf <- data.frame(from=as.character(c(6,6,6,8,8,8,8,8,8,9,20,20,20,36,36,36,
                                          36,36,36,36,36,36,36,36,36,36,36,36,36,
                                          36,36,44,44,44,44,44,44,48,50,50,50,50,
                                          50,50,50,50,50,50,50,50,50,50,50,50,50,
                                          50,50,50,50,50,50,50,50,50,50,50,50,51,
                                          51,51,51,51,58,62,1,8,25,1,25,36,44,1,
                                          28,37,44,62,1,8,25,1,1,15,25,36,45,1,
                                          28,60,1,8,25,44,36,1,1,6,28,62,25,1,1,
                                          8,1,25,28,36,50,62,1,8,13,28,36,37,44,
                                          46,1,20,44,57,1,8,25,29,1,25,44,1,8,44,
                                          8,35)),
                      to=as.character(c(3,20,53,16,20,30,46,51,61,65,3,39,53,1,
                                        3,6,9,15,16,21,27,29,30,33,35,37,41,51,
                                        58,60,65,23,24,28,41,46,57,9,3,4,6,9,13,
                                        15,16,20,21,23,24,27,28,29,30,35,39,40,
                                        41,45,48,51,53,57,58,60,61,62,65,3,27,30,
                                        37,53,6,3,3,3,3,4,4,4,4,6,6,6,6,6,9,9,9,
                                        15,20,20,20,20,20,23,23,23,27,27,27,27,
                                        28,35,37,37,37,37,39,40,45,45,46,46,46,
                                        46,46,46,48,48,48,48,48,48,48,50,51,51,
                                        51,51,53,53,53,53,58,58,58,62,62,62,65,65)))

# ui
ui <- fluidPage(
  visNetworkOutput("netPlot")
)

# server
server <- function(input, output){
  output$netPlot <- renderVisNetwork({
    visNetwork(nodesDf, edgesDf) %>%
      visEdges(arrows = list(to = list(enabled=TRUE, scaleFactor = 1.5))) %>%
      visHierarchicalLayout(enabled=TRUE, direction="UD", sortMethod="directed")
  })
}

shinyApp(ui=ui, server=server)

生成以下输出:

两个集群相距很远的网络

相同的数据visNetwork_2.0.7(带有一些其他颜色参数,但代码基本相同;我没有记录R版本)生成以下输出:

分层排列的网络

除了从默认值 150 降低之外,其他visHierarchicalLayout参数似乎都没有改变任何东西levelSeparation——这使两个主要级别更接近,但它们中的子级别彼此重叠,仍然一团糟。

我有一个运行不同数据的不同应用程序visNetwork_2.0.9,它表现得很好,但也显示了与 v2.1.0 相同的问题,所以我怀疑这个问题出现在 v2.0.9 和 v2.1.0 之间。我没有做任何不同的事情,也找不到任何说明参数需要不同类型处理的文档,所以这感觉像是一个错误。

标签: rshinyvisnetwork

解决方案


推荐阅读