Estoy trabajando en datos de red y quiero visualizarlos usando sankeyNetwork() del paquete networkd3 en r . En mi marco de datos, tengo un nodo de origen y un nodo de destino, un valor y un grupo de columnas de agrupación.
LinkGroup = "group" y quiero saber cómo hacer una leyenda para mostrar que los diferentes colores de los enlaces en realidad representan la variable de grupo.aquí está el código y el marco de datos...
# Libraries library(dplyr) library(tidyr) library(tibble) library(networkD3) # Load dataset from github data <- read.table("https://raw.githubusercontent.com/holtzy/data_to_viz/master/Example_dataset/13_AdjacencyDirectedWeighted.csv", header=TRUE) %>% rownames_to_column() %>% gather(key = "key", value = "value", -rowname) %>% filter(value > 0) %>% rename(source = rowname, target =key) %>% select("source", "target", "value") %>% mutate(group = c(rep("A", 10), rep("B",7), rep("C", 8), rep("D", 10))) nodes <- data.frame(name=c(as.character(data$source), as.character(data$target)) %>% unique()) data$IDsource=match(data$source, nodes$name)-1 data$IDtarget=match(data$target, nodes$name)-1 # Make the Network sankeyNetwork(Links = data, Nodes = nodes, Source = "IDsource", Target = "IDtarget", Value = "value", NodeID = "name", sinksRight=FALSE, nodeWidth=40, fontSize=13, nodePadding=20, LinkGroup = "group")Puede continuar permitiendo que los nodos de enlace reciban colores elegidos automáticamente en función de su grupo, y desactivar efectivamente la coloración de los nodos con la opción/argumento NodeGroup = NULL
sankeyNetwork(Links = data, Nodes = nodes, Source = "IDsource", Target = "IDtarget", Value = "value", NodeID = "name", sinksRight=FALSE, nodeWidth=40, fontSize=13, nodePadding=20, LinkGroup = 'group', NodeGroup = NULL) networkD3 no tiene ninguna opción integrada de creación de leyendas; sin embargo, si desea crear una leyenda usted mismo, probablemente querrá usar un conjunto consistente de colores para poder usarlos con lo que sea que use para crear una leyenda. Puedes hacerlo así...
colourScale <- 'd3.scaleOrdinal() .domain(["A", "B", "C", "D"]) .range(["red", "blue", "green", "yellow"])' sankeyNetwork(Links = data, Nodes = nodes, Source = "IDsource", Target = "IDtarget", Value = "value", NodeID = "name", sinksRight=FALSE, nodeWidth=40, fontSize=13, nodePadding=20, LinkGroup = 'group', NodeGroup = NULL, colourScale = colourScale)