我正在使用 sankeyNetwork 函数创建非常简单的流数据图表。即使使用多次迭代,生成的图表显然也有不必要的交叉。
我在 R Studio 2023.06.2+561 中使用 R 版本 4.3.1 (2023-06-16) 运行了此代码。
library(networkD3)
source<-c(0,1,2,0)
target<-c(3,3,4,4)
value<-c(13320, 274, 10950, 96000)
links<-data.frame(source, target, value)
nodes<-data.frame(names=c('Solar', 'Wind', 'Natural Gas', 'Electricity', 'Hydrogen'))
p <- sankeyNetwork(Links = links, Nodes = nodes, Source = "source",
Target = "target", Value = "value", NodeID = "names", iterations=32,
units = "TWh", fontSize = 12, nodeWidth = 30, sinksRight = FALSE)
生成的桑基图有一个明显可以避免的交叉点:如果“风”高于“太阳”,则不会有交叉点。我已经尝试了 1000 次迭代,但它没有做任何事情 - 这让我想知道问题是平台还是 R Studio - 因为 1000 次迭代应该比 1 慢。
我无法解释为什么 d3-sankey 不能避免这种交叉,但是如果你改变数据的顺序(并且不用费心搞乱迭代),你可以避免它......
library(networkD3)
source<-c(1,0,2,1)
target<-c(3,3,4,4)
value<-c(13320, 274, 10950, 96000)
links<-data.frame(source, target, value)
nodes<-data.frame(names=c('Wind', 'Solar', 'Natural Gas', 'Electricity', 'Hydrogen'))
sankeyNetwork(Links = links, Nodes = nodes, Source = "source",
Target = "target", Value = "value", NodeID = "names",
units = "TWh", fontSize = 12, nodeWidth = 30, sinksRight = FALSE)