networkD3 包中的 sankeyNetwork 大多数时候在定位节点方面非常聪明,但有时我想将节点水平放置到另一个位置。还有其他情况我想垂直移动边缘的起点。以下面的屏幕截图为例:
对于节点,我想将第 2 列的 B3 从右侧移动到左侧的第 4 列。同样,我想将 B4 从右侧第 2 列移动到左侧第 5 列。
对于边缘,我想将第一个边缘(B1->B11)的起点移动到 B1 的低端。
我的猜测是我需要对源代码进行一些更改并手动放入特定位置。我看到了这篇关于 js How to tune Horizontal node position in d3 sankeyjs 的帖子,但我不确定在 R 中该怎么做,除了我没有找到任何关于更改边缘位置的帖子。
这是可复制的数据和代码:
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"
)
先感谢您!