修复 R / networkD3 包中 Sankey 流程图的顺序
Fixing the order of a Sankey flow graph in R / networkD3 package
我想使用 Sankey 流程图可视化美国各州的排名变化(即相对顺序的变化)。我正在使用 networkd3 包并提出以下内容:
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)
我想使用 Sankey 流程图可视化美国各州的排名变化(即相对顺序的变化)。我正在使用 networkd3 包并提出以下内容:
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)