anpassen das sankeyNetwork von networkD3-Paket ist ziemlich clever die meiste Zeit bei der Positionierung der Knoten, aber es gibt Gelegenheiten, die ich den Knoten an einer anderen Stelle horizontal platzieren möchte. Es gibt auch andere Gelegenheit, dass ich den Startpunkt einer Kante vertikal verschieben möchte. Nehmen Sie die folgende Screenshot zum Beispiel:wie node & edge position in sankeyNetwork mit R
Für den Knoten, ich die B3 in der 2. Spalte von rechts in die 4. Spalte von links verschieben möge. Ähnlich möchte ich die B4 von der 2. Spalte von rechts nach der 5. Spalte von links bewegen.
Für die Kante möchte ich den Anfangspunkt der allerersten Kante (B1-> B11) zum unteren Ende von B1 verschieben.
Meine Vermutung ist, dass ich einige Änderungen am Quellcode vornehmen und die spezifischen Positionen manuell eingeben muss. Ich sah diesen Beitrag für js How to tune horizontal node position in d3 sankeyjs, aber ich bin mir nicht sicher, was ich in R tun soll, neben habe ich keinen Beitrag über die Änderung der Kantenpositionen zu sprechen.
Hier ist die replizierbar Daten und 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"
)
Danke im Voraus!
'd3-sankey' des justieren Haupt Der Zweck der Existenz besteht darin, die Knotenposition algorithmisch zu optimieren, wobei die Verbindungslänge als primäres Ziel minimiert wird, so dass eine manuelle Optimierung der horizontalen Knotenposition nicht grundlegend unterstützt oder erleichtert wird. –