无法在R中为networkD3包创建列表

问题描述 投票:2回答:2

radialNetwork

我想利用R包networkD3创建上面的径向网络。我read the guide here利用列表创建径向网络。不幸的是我缺乏列表的R技能。它们实际上是不存在的。幸运的是there's the R4DS guide here

在阅读完所有内容后,我想出了下面的代码,以创建上面的图表。

library(networkD3)
nd3 <- list(Start = list(A = list(1, 2, 3), B = "B"))
diagonalNetwork(List = nd3, fontSize = 10, opacity = 0.9)

唉,我的尝试失败了。随后的尝试无法生成任何接近上图的内容。我很确定这是我的清单,这是错的。也许你可以告诉我正确的清单,事情将开始有意义。

r list networkd3
2个回答
2
投票

杰森!这里的问题是参数nd3具有非常特定的节点名称和子节点的语法。所以你的代码应该是这样的:

library(networkD3)
nd3 <- list(name = "Start", children = list(list(name = "A",
                                                  children = list(list(name = "1"),
                                                                  list(name = "2"),
                                                                  list(name = "3")
                                                                  )),

                                                 list(name = "B")))
diagonalNetwork(List = nd3, fontSize = 10, opacity = 0.9)

2
投票

如果您像我一样,数据框/电子表格格式更容易包围,您可以使用您的数据构建一个简单的数据框,然后使用data.tree函数将其转换为list / json格式...

library(data.tree)
library(networkD3)

source <- c("Start", "Start", "A", "A", "A")
target <- c("A", "B", "1", "2", "3")
df <- data.frame(source, target)

nd3 <- ToListExplicit(FromDataFrameNetwork(df), unname = T)

diagonalNetwork(List = nd3, fontSize = 10, opacity = 0.9)

enter image description here

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