networkD3 Sankey 图 - 控制节点位置

Nev*_*vil 3 r r-markdown sankey-diagram networkd3 htmlwidgets

我希望在 R Markdown 中使用 HTML 小部件/Javascript 创建交互式桑基图,因此我正在考虑使用networkD3 包。我希望利用的主要交互性是单击节点,以使从节点发出的路径向用户突出显示。

我之前使用Riverplot 包创建了静态桑基图,您可以在其中指定每列节点的相对位置以及该列中节点的顺序。

回到networkD3产品,我不确定是否可以以相同、简单的方式控制相对节点位置(垂直和水平)。我发现了一些似乎与我的要求相关的帖子,但我不清楚哪些(如果有)已经在包中实现,以及“愿望清单”上有哪些

我找到的帖子是:nodesort固定节点序列浏览器

所以,我的问题是是否有人可以就最好的 R 包或技术提供建议,以便创建一个基于交互式 HTML 小部件的桑基图,并具有初始(相对)节点位置控制?

CJ *_*man 6

您可以通过使用参数有效地禁用sankeyNetwork()函数的自动布局优化。使用它,节点将以与数据框中相同的顺序绘制。networkD3iterations = 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)
Run Code Online (Sandbox Code Playgroud)

桑基图的顺序与数据框中的顺序相同