visNetwork visOptions No Resalta el Borde Deseado utilizando highlightNearest en un Gráfico No Dirigido
Tengo un grafo no dirigido y me gustaría resaltar todos los bordes relevantes (hacia y desde un nodo en particular) cuando haga clic en un nodo.
library(visNetwork)
nodes = data.frame( id = 1:2 , label = paste('Etiqueta', 1:2) )
edges = data.frame( from = 1 , to = 2 )
visNetwork( nodes , edges ) %>%
visOptions( highlightNearest = list( enabled = TRUE , degree = 0 ) )
El código anterior funciona perfectamente cuando hago clic en el nodo 1:
Sin embargo, ningún borde se resalta cuando hago clic en el nodo 2:
Esto se debe obviamente a que highlightNearest
solo resalta los bordes “desde” un nodo seleccionado. ¿Hay alguna opción para cambiar este comportamiento de modo que highlightNearest
asuma un grafo no dirigido?
Sospecho que mi pregunta puede ser lo que el autor de esta publicación de SO estaba insinuando. Sin embargo, creo que mi pregunta es más precisa, en mi humilde opinión.
davy.ai
Desafortunadamente, parece que actualmente no hay una opción incorporada en
visNetwork
para hacer quehighlightNearest
asuma un grafo no dirigido al resaltar los bordes. Una posible solución es especificar manualmente todos los bordes relevantes que se deben resaltar para cada nodo utilizando una funciónobserve
:En esta solución, la función
highlight_edges
se utiliza para determinar todos los bordes que son relevantes para un nodo seleccionado (es decir, los bordes conectados al nodo seleccionado o a otros nodos que también están conectados al nodo seleccionado). La funciónobserve
observa los clics en los nodos y utilizahighlight_edges
para determinar qué bordes resaltar utilizandovisEdges
.Nota: Esta solución puede no ser óptima para grafos grandes, ya que implica filtrar el marco de datos de los bordes para cada nodo seleccionado. Sin embargo, debería funcionar bien para grafos más pequeños.