我正在使用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)
有人能告诉我我做错了什么吗?
据我所知,forceNetwork
与simpleNetwork
的数据格式略有不同。
Links参数需要一个包含Node表中存储的节点索引的表(2列:"from"-"to",或如示例中的"source"-"target"(。请注意,索引应该以0开头,而不是以1开头。"链接"的第三列应为边缘宽度。
Nodes参数需要一个包含1(名称和2(组的表。
您在示例中使用的其他参数是您在"链接"one_answers"节点"中使用的表中相应列的列名。例如,当您使用NodeID = "c$a"
时,这意味着您的节点表有一个名为"c$a"的列。
看看帮助页面:?forceNetwork
他们对参数的描述比我好得多,但也向下滚动到示例并检查其示例数据的形状(MisLinks和MisNodes(。
也许这个litte代码可以给你一个方向(继续你的"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)