修复 R / networkD3 包中 Sankey 流程图的顺序

Fixing the order of a Sankey flow graph in R / networkD3 package

我想使用 Sankey 流程图可视化美国各州的排名变化(即相对顺序的变化)。我正在使用 包并提出以下内容:

library(dplyr)
library(networkD3)

df <- data_frame(origins=state.name[1:10], destinations=state.name[1:10])
lab <- c(df$origins, df$destinations)
nodes <- data.frame(node=c(0:9), name=lab)
links <- data.frame(source=c(0:9), target=c(10:19), value=rep(1,10))
sankeyNetwork(Links = links, Nodes = nodes, Source = 'source', 
              Target = 'target', Value = 'value', NodeID = 'name')

此代码段生成以下图表: 美国各州桑基流程图

我现在可以手动更改相对顺序了。但是,我想知道是否可以将订单固定在右侧并放置例如阿拉巴马州排名第 3,加利福尼亚州排名第 1,等等...

如果您在 sankeyNetwork() 中设置 iterations = 0,您将有效地禁用自动确定节点放置的算法(这是 sankeyNetwork() 函数的主要目的),并且节点将按照它们在 Nodes 数据框中出现的顺序放置。

library(networkD3)

states <- state.name[1:10]
ranks <- sample.int(10)

nodes <- data.frame(name = c(states, states[ranks]))
links <- data.frame(source = 1:10 - 1, target = order(ranks) + 10 - 1, value = 1)

sankeyNetwork(Links = links, Nodes = nodes, Source = 'source', 
              Target = 'target', Value = 'value', NodeID = 'name',
              iterations = 0)