visNetwork - highlightNearest - показывать только соединенные ребра с выбранным узлом
Я смотрю в сети Twitter сенаторов Соединенных Штатов. Я ищу возможность выбрать сенатора (с помощью nodeIdSelection) и выделить только узлы, подключенные к этому выбранному узлу, и выделить только эти соединенные ребра (это то, что я не могу понять). Я не хочу ребер между другими подключенными узлами показано. Когда я устанавливаю степень = 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)
Этот код дает мне:
Когда я устанавливаю степень = 1, отображаются правильные связанные узлы, но также имеются вторичные соединенные ребра между другими узлами, НЕ подключенными к выбранному узлу, также показанному. Поскольку имеется 100 сенаторов и более 2000 соединений, сюжет слишком "занят", чтобы можно было представить эти вторичные соединения.
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)
Этот код дает мне:
Как видите, сюжет становится слишком занятым. Есть ли способ получить результат, показанный со степенью = 0, с точки зрения только отображения ребер, соединенных с выбранным узлом, но также и отображения подключенных узлов?
Большое спасибо за любую помощь. Извините, если изображения немного трудно читать. Еще раз спасибо.
2 ответа
Ты хочешь 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))
Создано в 2018-05-26 пакетом представлением (v0.2.0).
Чтобы ответить на вопрос ОП, вы можете установить все ребра, не связанные с выбранными узлами, какhideColor
с использованиемvisEdges(color = list(inherit = "to"))
:
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(inherit="to")) %>%
visNodes(color = "blue") %>%
visOptions(highlightNearest = list(enabled = TRUE, degree = 1,
hideColor = "rgba(0,0,0,0.05)",
labelOnly = FALSE, hover = TRUE),
nodesIdSelection = list(selected = 6))
Из документации,inherit
можно установить на"to"
, , и логическое значение.
Значение по умолчанию:"from"
, что приводит к поведению OP:
visNetwork(vis_g$nodes, vis_g$edges) %>%
visIgraphLayout(layout = "layout_with_fr") %>%
visEdges(color = list(inherit = "from")) %>%
visNodes(color = "blue") %>%
visOptions(highlightNearest = list(enabled = TRUE,
hideColor = "rgba(0,0,0,0.05)"),
nodesIdSelection = list(selected = 6))
"both"
устанавливает края узла как плавный переход между цветами узла:
visNetwork(vis_g$nodes, vis_g$edges) %>%
visIgraphLayout(layout = "layout_with_fr") %>%
visEdges(color = list(inherit = "both")) %>%
visNodes(color = "blue") %>%
visOptions(highlightNearest = list(enabled = TRUE,
hideColor = "rgba(0,0,0,0.05)"),
nodesIdSelection = list(selected = 6))