Vielen Dank für Ihre Hilfe.Warum zeigt ForceNetwork in Netzwerkd3 R alle Knoten an, die nicht in der Kantenliste enthalten sind?
Ich bin mit dem networkd3
Paket in R
einen forceNetwork
Plot eines Nodelist und Links (Kantenliste) zu zeichnen.
Ich habe eine Kantenliste/Linkliste:
> edgelist
round_prob NODEAid NODEBid
33979 0.6245 6990 6588
4899 0.9797 1042 1041
37109 0.6046 7498 7531
27771 0.7144 5906 16029
3603 0.6452 783 804
28491 0.6078 6034 5862
4518 0.6245 962 9874
19613 0.6745 4121 10285
19916 0.8721 4179 4180
8249 0.6821 1737 1733
35389 0.7150 7145 16992
32010 0.6495 6728 16921
22553 0.6959 4722 4549
14996 0.6031 3273 12929
35927 0.6245 7221 9814
15349 0.6245 3337 3233
34833 0.6109 7085 6852
39044 0.6117 7936 7977
39075 0.6844 7944 10978
11691 0.6821 2572 2587
Dies ist ein Beispiel einer viel größeren Kantenliste, wo ich nur die Links mit Link Wahrscheinlichkeit> 0,6 und < 1. Die volle Kantenliste ausgewählt wurde Null indexiert, bevor die Probe genommen wurde.
Ich habe auch eine Nodelist, das ist 18000 Zeilen lang. dies Eine Probe davon ist:
> head(nodes)
node id gr
0 1097 0 1
1 1149 1 1
2 1150 2 1
3 3395 3 1
4 3396 4 1
5 3523 5 1
Ich versuche forceNetwork
zu plotten mit:
forceNetwork(Links = edgelist, Nodes = nodes, Source = "NODEAid",
Target = "NODEBid", Value = "round_prob", NodeID = "node",
Group = "gr", opacity = 0.9)
Dieses diesen Plan gibt, vor ein-:
Problem: Ich habe nur habe 20 Paare von Knoten, aber meine Handlung hat Tausende mehr (ich kann die Zahl nicht zurückgeben).
Durch Schweben über die nicht verbundenen Punkte konnte ich feststellen, dass sie aus allen möglichen Knoten bestehen, die in der Nodelist enthalten sind.
Grundsätzlich denke ich, dass forceNetwork
jeden möglichen Knoten plotten, auch diejenigen, die nicht in der Edgeliste sind.
Warum passiert das und wie kann ich damit aufhören?
Per dieser Frage Going crazy with forceNetwork in R: no edges displayed Ich stellte sicher, dass alle meine Daten im numerischen Format und Null indiziert war. Ich erhalte immer noch diesen Fehler.
Hinweis: Wenn ich das forceNetwork-Beispiel in dieser Frage How to plot a directed Graph in R with networkD3? ausführen und von diesem Lernprogramm https://christophergandrud.github.io/networkD3/ ist die Ausgabe wie erwartet.
er Code (nach simpleNetwork) tut, was benötigt wird. Und Sie haben Recht, dass die Lösung wäre, Ihre Knotenliste zuerst basierend auf der von Ihnen übergebenen Kantenliste zu erstellen und dann beide an "forceNetwork" zu übergeben. Nur ein Nigger. Auf 'simpleNetwork (Edgeliste)' becase ist das df nicht in der Reihenfolge, in der es erwartet wird, dass es das Diagramm etwas falsch anzeigt. – Mamonu
Ich habe den Befehl 'simpleNetwork' im obigen Code geändert ... Sie können die Spaltennamen für Quelle und Ziel explizit festlegen. –
@CJYetman Arbeitete wie ein Zauber - vielen Dank für Ihre Hilfe :) So wird der Index von 'nodes' (der, nachdem er die ursprünglichen 4-stelligen Knoten-IDs bestellt hat, auf Null zurückgesetzt wird) verwendet, um die' source' und 'zu codieren Ziel-IDs. Also sollten die Werte in 'source' in' target' mit der reset-id auf 'nodes' übereinstimmen, * not * (in diesem Fall) die ursprünglichen 4-stelligen IDs, die von der Abtastung der Originaldaten übrig geblieben sind? – Chuck