Estoy tratando de establecer un esquema de color personalizado usando sankeyNetwork() del paquete networkd3 en r . Este es el código de color personalizado que configuré para el argumento colourScale de sankeyNetwork() ...
# Give a color for each group: my_color <- 'd3.scaleOrdinal() .domain([ "Piped Water", "Dug well protected", "Tube well, borehole", "Spring protected", "Rainwater", "Dug well unprotected", "Spring unprotected", "Tanker truck / cart", "Surface water", "Other", "node_color" ]) .range([ "#2D20E1", "#ABA7ED", "#8726BE", "#12B3F3", "#6178e8", "#F6F614", "#BDBD07", "#F4710E", "#EEB56E", "#6F3609" ])'Sin embargo, los colores personalizados establecidos en este código no aparecen como esperaba en el gráfico de sankey de salida.
Es posible que tenga un problema con D3/JavaScript comparando solo la primera palabra de sus valores de LinkGroup, es decir, ignorando todo después del primer espacio. Puede solucionar eso reemplazando los espacios con algo más, como un "_", tanto en el marco de datos de Enlaces como en JavaScript en my_color .
Aquí hay un ejemplo reproducible completo...
library(networkD3) nodes <- read.table(header = TRUE, text = ' name node_group "Node 0" "node_color" "Node 1" "node_color" "Node 2" "node_color" "Node 3" "node_color" "Node 4" "node_color" "Node 5" "node_color" "Node 6" "node_color" "Node 7" "node_color" "Node 8" "node_color" "Node 9" "node_color" "Node 10" "node_color" ') links <- read.table(header = TRUE, text = ' source target value link_group 0 10 1 "Piped Water" 1 10 1 "Dug well protected" 2 10 1 "Tube well, borehole" 3 10 1 "Spring protected" 4 10 1 "Rainwater" 5 10 1 "Dug well unprotected" 6 10 1 "Spring unprotected" 7 10 1 "Tanker truck / cart" 8 10 1 "Surface water" 9 10 1 "Other" ') links$link_group <- gsub(" ", "_", links$link_group) my_color <- paste0( 'd3.scaleOrdinal() .domain(["', paste0(links$link_group, collapse = '", "'), '"]) .range([ "#F00", // red "#0F0", // green "#00F", // blue "#FF0", // yellow "#71A", // purple "#EEE", // off-white "#666", // grey "#000", // black "#520", // brown "#FA0", // orange "#AAA" ])') sankeyNetwork( Links = links, Nodes = nodes, Source = "source", Target = "target", Value = "value", NodeID = "name", NodeGroup = "node_group", LinkGroup = "link_group", colourScale = my_color )