Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

570
Views
Cómo forzar a networkD3::sankeyNetwork() a repetir nodos en lugar de volver al mismo nodo

Hola, estoy creando un diagrama de sankey para mostrar la migración. Un aspecto con el que tengo problemas es cómo lidiar con escenarios cuando el estado no cambia, es decir, la migración no ocurre. En tales escenarios, el sankey está dando vueltas de regreso a la misma fuente, creando un círculo en lugar de usar un diseño de 'fuente-objetivo' donde ambas fuentes y destinos están separados. me gustaría ver algo como

ingrese la descripción de la imagen aquí

en lugar de seguir lo que estoy viendo ahora ingrese la descripción de la imagen aquí

El siguiente es un ejemplo reproducible. Agradezco cualquier ayuda con esto.

 library(networkD3) library(dplyr) links<-data.frame( source=c('One','Two','Two','Three','Three','Four','Four','Five','Five','Six'), target=c('Two','Two','Three','Three','Four','Four','Five','Five','Six','Seven'), value=c(78,108,27,14,31,38,17,76,10,89) ) nodes <- data.frame( name=c(as.character(links$source), as.character(links$target)) %>% unique() ) links$IDsource <- match(links$source, nodes$name)-1 links$IDtarget <- match(links$target, nodes$name)-1 sankeyNetwork(Links = links, Nodes = nodes, Source = "IDsource", Target = "IDtarget", Value = "value", NodeID = "name", fontSize = 20)
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Cada nodo que desee ver en el gráfico debe identificarse de forma única en el marco de datos de sus nodos. Si desea que algunos nodos únicos compartan la misma etiqueta, puede agregar una columna al marco de datos de los nodos para la etiqueta y especificarla en el argumento NodeID ... no es necesario que sean únicos.

 library(networkD3) links <- read.csv(header = TRUE, strip.white = TRUE, text =" source, target, value One_1, Two_2, 78 Two_2, Two_3, 108 Two_2, Three_3, 27 Three_3, Three_4, 14 Three_3, Four_4, 31 Four_4, Four_5, 38 Four_4, Five_5, 17 Five_5, Five_6, 76 Five_5, Six_6, 10 Six_6, Seven_7, 89 ") id <- unique(c(as.character(links$source), as.character(links$target))) label <- sub("_[0-9]", "", id) nodes <- data.frame(id = id, label = label) links$IDsource <- match(links$source, nodes$id)-1 links$IDtarget <- match(links$target, nodes$id)-1 sankeyNetwork(Links = links, Nodes = nodes, Source = "IDsource", Target = "IDtarget", Value = "value", NodeID = "label", fontSize = 20)

ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!