我希望在R Markdown中使用HTML小部件/ Javascript创建一个交互式Sankey图,所以我正在考虑使用networkD3 package。我希望利用的主要交互性是点击节点,使其中突出显示的路径突出显示给用户。
我之前使用Riverplot package创建了静态Sankey图表,您可以在其中指定每列节点的相对位置以及该列中节点的顺序。
回到networkD3
产品,我不确定能否以相同,简单的方式控制相对节点位置(垂直和水平)。我发现了一些似乎与我的要求相关的帖子,但是我不清楚哪些(如果有的话)已经在包中实现了,以及&#上的&# 39;愿望清单'
我找到的帖子有:nodesort,fixed nodes和sequence explorer
所以,我的问题是,是否有人可以建议使用最好的R包或技术来创建基于交互式HTML小部件的sankey图,并具有初始(相对)节点位置控制?
答案 0 :(得分:3)
您可以使用sankeyNetwork()
参数有效禁用networkD3
中iterations = 0
函数的自动布局优化。使用它,节点的绘制顺序与数据框中的顺序相同。
例如......
library("networkD3")
myDf <- list(
nodes=data.frame(name=c( "A", "B", "C", "D", "E",
"V", "W", "X", "Y", "Z")),
links=data.frame(source=as.integer(c(0, 1, 2, 3, 3, 4, 4)),
target=as.integer(c(7, 6, 7, 8, 7, 5, 9)),
value = c(1, 4, 1, 5, 1, 5, 3)
)
)
sankeyNetwork(Links = myDf$links, Nodes = myDf$nodes, Source = "source",
Target = "target", Value = "value", NodeID = "name",
units = "TWh", fontSize = 25, nodeWidth = 30,
fontFamily = "sans-serif", iterations = 0)