我正在使用R中的networkD3库为我的数据创建一个关系图:
library(igraph)
library(dplyr)
library(networkD3)
#create file from which to sample from
x5 <- sample(1:1000000000, 2000, replace=T)
#convert to data frame
x5 = as.data.frame(x5)
#create first file (take a random sample from the created file)
a = sample_n(x5, 1000)
#create second file (take a random sample from the created file)
b = sample_n(x5, 1000)
#combine
c = cbind(a,b)
#create dataframe
c = data.frame(c)
#rename column names
colnames(c) <- c("a","b")
#convert to factors
c$a = as.factor(c$a)
c$b = as.factor(c$b)
#plot graph (with networkD3)
c = data.frame(c)
simpleNetwork(c, fontSize= 20, zoom = T)当我制作这个图时,我发现输出不是很容易查看和操作。
我正在尝试使用强制图布局,但我在使用它时遇到了困难:
forceNetwork(Links = c$b, Nodes = c$a,
Source = "source", Target = "target",
Value = "value", NodeID = "c$a",
opacity = 0.8)有人能告诉我我做错了什么吗?
发布于 2020-11-01 20:40:53
据我理解,forceNetwork的数据格式与simpleNetwork略有不同。
Links参数需要一个表来保存节点表中存储的节点的索引(2列:'from‘- 'to',或者像示例'source’-‘target’中的那样)。注意,索引应该从0开始,而不是从1开始。第三列的“链接”应该是边的宽度。
节点参数需要一个具有名称和组的表。
在示例中使用的附加参数是在“链接”和“节点”中使用的表中相应列的列名。例如,当您使用NodeID = "c$a"时,这意味着节点表有一个名为“c$a”的列。
查看帮助页面:?forceNetwork --它们比我更好地描述参数,但也向下滚动到示例并检查它们的示例数据的形状(MisLinks和MisNodes)。
也许这个小代码可以给你一个方向(继续你的'c‘对象):
c$a = as.character(c$a)
c$b = as.character(c$b)
Nodes_IDs <- data.frame(name=sort(unique(c(c$a, c$b))))
Nodes_IDs$gr <- 1
# JavaScript need zero-indexed IDs.
c$a <- match(c$a, Nodes_IDs[,1]) -1
c$b <- match(c$b, Nodes_IDs[,1]) -1
c$width <- .5
forceNetwork(Links = c, Nodes = Nodes_IDs,
Source = "a", Target = "b",
Value = "width", NodeID = "name",
Group = "gr",
opacity = 0.8)https://stackoverflow.com/questions/64634856
复制相似问题