le paquet sankeyNetwork de networkD3 est assez astucieux la plupart du temps pour positionner les noeuds, mais il y a des occasions où je veux placer le noeud horizontalement. Il y a aussi d'autres occasions où je veux déplacer verticalement le point de départ d'une arête. Prenez la capture d'écran ci-dessous par exemple:comment personnaliser le noeud et la position de bord dans sankeyNetwork en utilisant R
Pour le nœud, je veux déplacer le B3 sur la 2e colonne de droite à la 4ème colonne de gauche. De même, je veux déplacer le B4 de la 2ème colonne de la droite à la 5ème colonne de la gauche.
Pour le bord, je veux déplacer le point de départ du premier bord (B1-> B11) à l'extrémité inférieure de B1. Je suppose que j'ai besoin d'apporter quelques modifications au code source et de mettre manuellement dans les positions spécifiques. J'ai vu cet article pour js How to tune horizontal node position in d3 sankeyjs, mais je ne suis pas sûr de savoir quoi faire en R, à part je n'ai trouvé aucun post parlant de changer les positions de bord.
Voici les données réplicables et code:
load(url("https://github.com/bossaround/question/raw/master/sankeyexample.RData"))
# nn is the node, ee is the edge, now create the link (ll)
ll <- inner_join(ee, nn, by = c("N1"="name")) %>%
rename(source_ID = ID) %>%
inner_join(nn, by = c("N2"="name")) %>%
rename(target_ID = ID)
# Create Sankey Plot
sankeyNetwork(
Links = ll,
Nodes = nn,
Source = "source_ID",
Target = "target_ID",
Value = "Value",
NodeID = "newname",
fontSize = 12,
nodeWidth = 40,
nodePadding = 20,
NodeGroup = "newname"
)
Merci à l'avance!
de 'd3-sankey' principale le but de l'existence est d'optimiser de façon algorithmique la position du nœud, en minimisant la longueur du lien comme objectif principal, de sorte que le réglage manuel de la position du nœud horizontal n'est pas quelque chose qui est fondamentalement supporté ou facilité. –