【发布时间】:2019-05-11 15:57:01
【问题描述】:
我正在使用 visNetwork 创建可视化 我希望这里有人帮助我一步一步地在 R 中创建可视化。如何创建 20 个节点的可视化,并连接它们的边。谢谢
【问题讨论】:
标签: r visnetwork
我正在使用 visNetwork 创建可视化 我希望这里有人帮助我一步一步地在 R 中创建可视化。如何创建 20 个节点的可视化,并连接它们的边。谢谢
【问题讨论】:
标签: r visnetwork
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。