Я пытаюсь построить интерактивную многоуровневую диаграмму Санки, используя R. Я не могу найти решение, как назначать уровни узлам. Например, узел a1 должен находиться на втором уровне графика, а не на пятом. Кажется, что пакет назначает последнему узлу в цепочке крайнюю правую позицию, что не является предпочтительным в моем случае. ![enter image description here](https://i.stack.imgur.com/nfLxg.png)
Я пробовал разные пакеты, такие как echarts4r
, networkD3
, ggvis
, но кажется, что эти пакеты не обеспечивают функциональность для управления уровнями в графике.
Если вы знаете, как решить эту проблему, пожалуйста, поделитесь.
library('networkD3')
library('echarts4r')
library('googleVis')
sankey <- data.frame(
source = c("a", "a", "b", "c", "d", "c"),
target = c("b", "a1", "c", "d", "e", "e"),
value = ceiling(rnorm(6, 10, 1)),
stringsAsFactors = FALSE
)
# googleVis solution
plot(gvisSankey(sankey, from = 'source', to = 'target', weight = 'value'))
# echarts4r solution
sankey %>%
e_charts() %>%
e_sankey(source, target, value, focusNodeAdjacency = 'allEdges')
# networkD3 solution
nodes <- data.frame(name = c("a", "a1", "b", "c", "d", "e"))
links <- data.frame(
source = c(0, 0, 2, 3, 4, 3),
target = c(2, 1, 3, 4, 5, 5),
value = ceiling(rnorm(6, 10, 1))
)
sankeyNetwork(Links = links,
Nodes = nodes,
Source = "source",
Target = "target", Value = "value", NodeID = "name",
fontSize = 12, nodeWidth = 30, sinksRight = TRUE)