有没有办法设置networkd3 Sankey的默认垂直对齐方式?

问题描述

我正在R中使用networkd3软件包来构建Sankey网络。我尝试浏览其他问题,但找不到相关的问题。认情况下,节点在视图窗口的顶部垂直对齐,如下所示:

Default Sankey - top vertical alignment

如果可能的话,我想在底部自动对齐它们(避免单击和拖动节点),就像这样:

Sankey - bottom vertical alignment

networkD3::sankeyNetwork函数似乎没有任何选择,我想知道htmlwidgets::onRender中是否有JS选项可用。任何帮助将不胜感激!

代码以在上面的第一张图中生成图:

library(networkD3)

## Create links dataframe
links <- data.frame(
  from = c("A1","A2","A3","A4","A5"),to = c("B","B","B"),count = c(10,10,5,10)
)

## Create node dataframe
nodes <- data.frame(
  name = unique(
    c(
      as.character(links$from),as.character(links$to)
    )
  )
)

## Add node indices to link data (zero-indexed)
links$source = match(links$from,nodes$name)-1
links$target = match(links$to,nodes$name)-1

## Render Sankey
sankeyNetwork(
  Links = links,Nodes = nodes,Source = "source",Target = "target",Value = "count",NodeID = "name",iterations = 0,sinksRight = FALSE
)

解决方法

我无法想象不重写/覆盖JavaScript中的sankey生成器函数的方法,在这种情况下,用JavaScript自己创建sankey而不是使用networkD3更有意义