2017-10-30 1 views
1

Ich versuche data.tree und NetworkD3 in R zu verwenden, um eine Baumdarstellung eines Dateisystems zu erstellen, in dem die Knoten des Diagramms nach Dateigröße gewichtet werden.Einstellung networkD3 Knotengröße mit Vektor der Gewichte

library(data.tree) 
library(networkD3) 

repo <- Node$new("Repository") 
git <- repo$AddChild(".git") 
prod <- repo$AddChild("Production") 
exp <- repo$AddChild("Experimental") 

repo$size <- 866000 
git$size <- 661000 
prod$size <- 153000 
exp$size <- 48000 

ich einen Vektor von diesen Größen bekommen kann mit Get, so dass

sizes <- repo$Get("size") 

Aber wenn ich versuche, sie alle zusammen zu setzen, ich bin nicht sicher, wie dieses Gewicht Informationen enthalten in der Netzwerkvisualisierungsschritt. Versucht, so etwas zu tun ...

reponet <- ToDataFrameNetwork(repo,"repo") 
net <- forceNetwork(reponet, Nodesize = repo$Get("size")) 

vergeblich. Im Grunde versuche ich zu tun, was Julia Silge in diesem tollen SO blog post gemacht hat. Kann jemand das einstellen?

Antwort

2

Überprüfen Sie die Hilfedatei für forceNetwork ... Es gibt zahlreiche, obligatorische Parameter, die Sie nicht festgelegt haben.

Sie können simpleNetwork verwenden, um ein Netzwerk mit nur einem Links-Datenrahmen zu zeichnen, wie Sie haben, aber es erlaubt Ihnen nicht die Knotengröße zu steuern ... zum Beispiel ...

simpleNetwork(reponet) 

zu Um die Knotengröße zu steuern, müssen Sie forceNetwork verwenden, aber es erfordert einen Link-Datenrahmen und einen Knoten-Datenrahmen. Sie könnten den Nodes-Datenrahmen aus dem sizes-Objekt erstellen, das Sie erstellt haben, und dann die Quell- und Ziel-IDs in Ihrem Link-Datenrahmen an die Indizes des entsprechenden Knotens in Ihrem Nodes-Datenrahmen anpassen (0 indiziert, weil er an JavaScript gesendet wird). .. zum Beispiel ...

nodesdf <- data.frame(name = names(sizes), nodesize = sizes/10000, group = 1) 

reponet$from <- match(reponet$from, nodesdf$name) - 1 
reponet$to <- match(reponet$to, nodesdf$name) - 1 

forceNetwork(reponet, Nodes = nodesdf, Source = "from", Target = "to", 
      NodeID = "name", Group = "group", Nodesize = "nodesize") 
+0

Vielen Dank für die eingehende Erklärung. Das hat sofort funktioniert. Aufgeregt, um mehr Möglichkeiten zur Anpassung zu betrachten. –

Verwandte Themen