2017-09-27 3 views
0

J'essaye de construire la parcelle de sankey dans R en utilisant la bibliothèque networkD3.sankeyNetwork a ordonné des noeuds dans r

Je contiennent des données suivantes

print(nodes1) 

    name 
1 as 
2 sdf 
3 wer 
4 xc 
5 sd 
6 er 

print(links) 

    source target value 
1  0  5 112 
2  0  4 848 
3  0  4 661 
4  0  4 33 
5  0  3 291 
6  1  5 23 
7  1  4 983 
8  1  3 859 
9  1  3 35 
10  2  4 537 

Alors, quand je tente de créer sankeyNetwork en utilisant le code suivant

sankeyNetwork(Links = links1, Nodes = nodes1, 
Source = "source", Target = "target", 
Value = "value", NodeID = "name", 
fontSize= 12, nodeWidth = 30) 

Je me le résultat suivant.

SankeyPlot

Cependant, il n'est pas l'impression des noeuds dans l'ordre.

Dans ma trame de données de noeud, j'ai "comme" est le premier noeud, et "sdf" est le deuxième noeud. Cependant, dans l'image, je reçois "comme" premier noeud, et "wer" comme second noeud.

Comment puis-je m'assurer que le graphe suit l'ordre dans les nœuds?

+0

'sankeyNetwork' ne permet pas d'être des nœuds ordonné manaullly/progamatically. Je peux essayer de creuser le lien plus tard. Si vous voulez définir l'ordre des nœuds, vous pouvez essayer 'riverplot' mais ce n'est pas interactif. – emilliman5

+0

J'ai besoin graphique interactif –

Répondre

2

Si vous définissez iterations = 0, l'algorithme qui fait l'auto-positionnement des nœuds essentiellement pas courir et laisser les noeuds dans leurs positions initiales ...

nodes <- read.table(header = T, text = " 
name 
as 
sdf 
wer 
xc 
sd 
er 
") 

links <- read.table(header = T, text = " 
source target value 
0  5 112 
0  4 848 
0  4 661 
0  4 33 
0  3 291 
1  5 23 
1  4 983 
1  3 859 
1  3 35 
2  4 537 
") 

library(networkD3) 
sankeyNetwork(Links = links, Nodes = nodes, 
       Source = "source", Target = "target", 
       Value = "value", NodeID = "name", 
       fontSize= 12, nodeWidth = 30, iterations = 0) 
+0

Merci :), il fonctionne comme je m'y attendais. Je vous remercie –