R 中桑基图的节点不组合在一起

问题描述 投票:0回答:1

我使用下面的 R 代码生成桑基图。问题是节点没有按预期排列。例如,两个 M3 节点与 M24 节点组对齐,而不是与其他 M3 节点分组在一起。我将不胜感激任何有关如何控制 R 中节点的水平位置的建议。 谢谢。

library(networkD3)

# Define nodes and links data frames
nodes <- data.frame(
  'name' = c("BL", "M3", "M3", "M3", "M3", "M12", "M12", "M12", "M12", "M18", "M18", "M18", "M18", "M24", "M24", "M24", "M24"),
  'group' = as.factor(c("g","dgr","lgr","g","r","dgr","lgr","g","r","dgr","lgr","g","r","dgr","lgr","g","r"))
)

links <- data.frame(
  'source' = c(0, 0, 0, 0, 3, 3, 3, 3, 4, 4, 4, 4, 7, 7, 7, 7, 8, 8, 8, 8, 11, 11, 11, 12, 12, 12, 12),
  'target' = c(1, 2, 3, 4, 5, 6, 7, 8, 5, 6, 7, 8, 9, 10, 11, 12, 9, 10, 11, 12, 13, 15, 16, 13, 14, 15, 16),
  'value' = c(70, 80, 1504, 843, 14, 13, 695, 317, 12, 44, 87, 271, 5, 10, 360, 183, 6, 12, 69, 219, 7, 186, 108, 2, 5, 46, 138),
  'group' = as.factor(c("dgr_","lgr_","g_","r_","dgr_","lgr_","g_","r_","dgr_","lgr_","g_","r_","dgr_","lgr_","g_","r_","dgr_","lgr_","g_","r_","dgr_","g_","r_","dgr_","lgr_","g_","r_"))
)

# Define color scale
my_color <- 'd3.scaleOrdinal().domain(["g","dgr","lgr","r","g_","dgr_","lgr_","r_"]) .range(["green", "darkgrey", "lightgrey","red", "green", "darkgrey", "lightgrey","red"])'

# Plot Sankey diagram
sankey_R = sankeyNetwork(
  Links = links, Nodes = nodes,
  Source = "source", Target = "target",
  Value = "value", NodeID = "name",
  fontSize = 12, nodeWidth = 20,
  colourScale = my_color,
  NodeGroup = "group", LinkGroup = "group"
)

sankey_R

我尝试使用plot_ly()代替sankeyNetwork(),但结果是相同的

nodes sankey-diagram
1个回答
0
投票

我找到了解决办法。如果我使用plot_ly生成Sankey,并输出为.html,那么我可以拖动节点并根据需要重新排列它们。

© www.soinside.com 2019 - 2024. All rights reserved.