【问题标题】:visNetwork in RR中的visNetwork
【发布时间】:2019-05-11 15:57:01
【问题描述】:

我正在使用 visNetwork 创建可视化 我希望这里有人帮助我一步一步地在 R 中创建可视化。如何创建 20 个节点的可视化,并连接它们的边。谢谢

【问题讨论】:

标签: r visnetwork


【解决方案1】:

visNetwork 依赖数据帧来指示节点名称和 ID,以及连接到相关节点的边。 20 个节点的最小示例如下:

library(shiny)
library(visNetwork)

nodes <- data.frame(id = 1:20, label = 1:20)
edges <- data.frame(from = c(1:20), to = c(2:20,1))

server <- function(input, output, session) {
  output$myNetId <- renderVisNetwork({
    visNetwork(nodes, edges)
    })
}

ui <- fluidPage(
  visNetworkOutput("myNetId",
                   height <- "400px",
                   width <- "600")
)

shinyApp(ui <- ui, server <- server)

一步一步地,在导入所需的两个库后,我们然后指定节点 data.frame,如果您希望在节点旁边填充文本,则该节点可以包含标签变量。我们刚刚指定了从 1 到 20 的 20 个节点。

edges 变量表示一个边缘列表,data.frame 中的每一行表示单个边缘的起点和终点。一个如下所示的 data.frame:

data.frame(from = c(1,1), to = c(2,3))

... 将产生从节点#1 到节点#2 和#3 的两条边。我已经设置好了,所以每个节点都像一个圆圈一样连接到下一个顺序节点。

服务器是一个 shinyApp 对象,它使用“myNetId”作为 visNetwork 应该如何操作的参考,而 ui 中的 visNetworkOutput() 函数充当画布,指示网络应该在屏幕中显示的位置。您可以使用 >%> 向 visNetwork() 函数添加其他参数,如下所示:

  visNetwork(nodes, edges) %>%
      visPhysics(solver = "barnesHut",
                 minVelocity = 0.1,
                 forceAtlas2Based = list(gravitationalConstant = -150)) %>%
      visOptions(manipulation = TRUE, highlightNearest = FALSE) %>%
      visEdges(arrows = 'to')

希望有帮助!

【讨论】:

  • 感谢您提供此答案。当我实现这个解决方案(并将highlightNearest 更改为TRUE)时,我最终得到了一个解决方案,其中只有给定节点的边缘from 被突出显示。你能解释一下吗?见simplified SO question here
猜你喜欢
  • 2019-06-17
  • 2018-04-26
  • 2023-03-24
  • 2018-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多