【问题标题】:sankeyNetwork ordered nodes in rr中的sankeyNetwork有序节点
【发布时间】:2017-09-27 22:41:56
【问题描述】:

我正在尝试使用 networkD3 库在 R 中构建 sankey 图。

我有以下数据

print(nodes1)

  name
1   as
2  sdf
3  wer
4   xc
5   sd
6   er

print(links)

   source target value
1       0      5   112
2       0      4   848
3       0      4   661
4       0      4    33
5       0      3   291
6       1      5    23
7       1      4   983
8       1      3   859
9       1      3    35
10      2      4   537

所以当我尝试使用以下代码创建 sankeyNetwork 时

sankeyNetwork(Links = links1, Nodes = nodes1,
 Source = "source", Target = "target",
 Value = "value", NodeID = "name",
 fontSize= 12, nodeWidth = 30)

我得到以下结果。

但是,它不是按顺序打印节点。

在我的节点数据框中,“as”是第一个节点,“sdf”是第二个节点。但是,在图像中,我将“as”作为第一个节点,将“wer”作为第二个节点。

如何确保图形在节点中遵循顺序?

【问题讨论】:

  • sankeyNetwork 不允许以手动/程序方式对节点进行排序。稍后我可以尝试挖掘链接。如果您想设置节点排序,您可以尝试riverplot,但它不是交互式的。
  • 我需要交互式图表

标签: r sankey-diagram htmlwidgets networkd3


【解决方案1】:

如果您设置iterations = 0,则执行节点自动定位的算法基本上不会运行并将节点留在初始位置...

nodes <- read.table(header = T, text = "
name
as
sdf
wer
xc
sd
er
")

links <- read.table(header = T, text = "
source target value
0      5   112
0      4   848
0      4   661
0      4    33
0      3   291
1      5    23
1      4   983
1      3   859
1      3    35
2      4   537
")

library(networkD3)
sankeyNetwork(Links = links, Nodes = nodes,
              Source = "source", Target = "target",
              Value = "value", NodeID = "name",
              fontSize= 12, nodeWidth = 30, iterations = 0)

【讨论】:

  • 谢谢 :),它正在按我的预期工作。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-04
  • 2018-04-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多