¿Hay alguna forma de seleccionar un nodo específico usando NetworkD3 para cambiar su color?
Aquí está mi código. ¡Me gustaría usar customJS para lograr eso!
p <- forceNetwork(Links = links, Nodes = nodes, Source = 'source', Target = 'target', NodeID = 'name', Group = 'group', Value = "value", Nodesize = 'size', radiusCalculation = JS("d.nodesize/2"), zoom = TRUE, arrows = FALSE, linkWidth = JS("function(d){return d.value;}"), linkDistance = JS("function(d){return d.value*100}"), charge = gravity, opacity = 0.95, fontSize = 24, bounded = FALSE, linkColour = "#424242" ) customJS <- "function() { d3.selectAll('.node text').style('fill', 'white').attr('stroke-width', '.1px').attr('stroke', '#3f3f3f'); d3.select('body').style('background-color', '#15171A'); simulation = this; simulation.stop(); for (var i = 0; i < 300; ++i) simulation.tick(); simulation.restart(); }" g <- htmlwidgets::onRender(p, customJS)La forma canónica de controlar el color de los nodos es usar el argumento Group para especificar una columna en el marco de datos de sus nodes que especifica un grupo para cada nodo. Puede tener un solo nodo en un grupo único y/o puede tener varios nodos en un grupo, y puede tener tantos grupos como desee (al menos hipotéticamente, pero obviamente limitado por los recursos de su máquina y la cantidad de colores/ grupos que efectivamente se pueden ver en su pantalla).
De forma predeterminada, el color de cada grupo se elige automáticamente de la paleta de colores D3 predeterminada. Si desea especificar una paleta diferente, o si desea especificar colores específicos para grupos específicos, puede modificar el valor predeterminado para el argumento colourScale de colores.
library(networkD3) data(MisLinks) data(MisNodes) MisNodes$group <- ifelse(as.character(MisNodes$name) > "M", "group_1", "group_2") colourScale <- 'd3.scaleOrdinal().domain(["group_1", "group_2"]).range(["#FF0000", "#0000FF"]);' forceNetwork(Links = MisLinks, Nodes = MisNodes, Source = "source", Target = "target", Value = "value", NodeID = "name", Group = "group", opacity = 1, colourScale = colourScale)