visNetwork - highlightNearest - 仅显示所选节点的连接边

时间:2018-05-25 15:17:32

标签: r node.js visnetwork

我正在寻找美国参议员的推特网络。我希望能够选择一个参议员(使用nodeIdSelection)并且只突出显示连接到所选节点的节点并仅突出显示这些连接的边缘(这是我无法弄清楚的)。我不希望显示其他连接节点之间的边缘。当我设置degree = 0时,这给了我正在寻找的结果,只是突出显示连接的边,但是没有显示连接的节点(圆圈)。

visNetwork(nodes, edges) %>% 
 visIgraphLayout(layout = "layout_with_fr") %>% 
 visOptions(highlightNearest = list(enabled = TRUE, algorithm = "all",
                                    degree = 0, hideColor = "rgba(0,0,0,0)"), 
                                    nodesIdSelection = TRUE) %>% 
 visInteraction(navigationButtons = TRUE)

这段代码告诉我:

当我设置degree = 1时,会显示正确的连接节点,但是在未连接到所示节点的其他节点之间也存在辅助连接边缘。由于有100名参议员和2,000多个连接,因此显示这些辅助连接的情况太过“忙碌”。

visNetwork(nodes, edges) %>% 
 visIgraphLayout(layout = "layout_with_fr") %>% 
 visOptions(highlightNearest = list(enabled = TRUE, algorithm = "all",
                                    degree = 1, hideColor = "rgba(0,0,0,0)"), 
                                    nodesIdSelection = TRUE) %>% 
 visInteraction(navigationButtons = TRUE)

这段代码告诉我:

正如你所看到的,情节变得太忙了。是否有一种方法可以使用degree = 0显示结果,只显示连接到所选节点的边缘,还显示连接的节点?

非常感谢您的帮助。对不起,如果图像有点难以阅读。再次感谢。

1 个答案:

答案 0 :(得分:0)

您想要degree = 1

library(igraph)
g <- graph("Zachary")

library(visNetwork)
vis_g <- toVisNetworkData(g)

visNetwork(vis_g$nodes, vis_g$edges) %>%
  visIgraphLayout(layout = "layout_with_fr") %>%
  visEdges(color = list(highlight = "blue", hover = "blue")) %>%   # explicit edge options
  visOptions(highlightNearest = list(enabled = TRUE, degree = 1,
                                     labelOnly = FALSE, hover = TRUE),
             nodesIdSelection = list(selected = 6))

reprex package(v0.2.0)创建于2018-05-26。