Construí un diagrama de Sankey en R usando el paquete networkD3 y quería agregar una sombra de texto a las etiquetas de los nodos. En realidad, lo que necesito es que el texto esté delineado de alguna manera porque mis datos originales son muy complejos y parte del texto se confunde con las "líneas" que conectan los nodos. Este fue el enfoque que encontré en StackOverflow que debería funcionar bien, pero si alguien tiene alguna otra idea, estoy abierto a nuevos enfoques.
Encontré una pregunta cuya implementación parece ser muy similar a la mía: texto en negrita en R usando el paquete networkD3
Pero cuando intento el mismo enfoque, no pasa nada.
Un dato genérico sería:
library(networkD3) URL <- "https://cdn.rawgit.com/christophergandrud/networkD3/master/JSONdata/energy.json" Energy <- jsonlite::fromJSON(URL) sn <- sankeyNetwork(Links = Energy$links, Nodes = Energy$nodes, Source = "source", Target = "target", Value = "value", NodeID = "name", fontSize = 14, nodeWidth = 20, height = 900, width = 700, units = "px") Así, intenté por mi cuenta usar la función onRender de htmlwidgets pero fue en vano. Como tal, adapté el código del tema mencionado pero nada cambió en el widget generado:
library(htmlwidgets) onRender(sn, ' function(el) { d3.selectAll(".node text").attr("text-shadow", "1px 0 white, -1px 0 white, 0 1px white, 0-1px white") } ' )Para aplicar estilos CSS, debe usar .style() en lugar de .attr() ...
htmlwidgets::onRender(sn, jsCode = ' function(el) { d3.selectAll(".node text").style("text-shadow", "1px 0 white, -1px 0 white, 0 1px white, 0 -1px white") } ')