我正在尝试使用ggnet2来可视化网络分析,但是在插件中遇到了错误.
我可以生成随机网络,
library(ggnet2)
library(network)
library(sna)
library(ggplot2)
net = rgraph(10, mode = "graph", tprob = 0.5)
net = network(net, directed = FALSE)
# vertex names
network.vertex.names(net) = letters[1:10]
输出看起来合理
>net
Network attributes:
vertices = 10
directed = FALSE
hyper = FALSE
loops = FALSE
multiple = FALSE
bipartite = FALSE
total edges= 28
missing edges= 0
non-missing edges= 28
Vertex attribute names:
vertex.names
No edge attributes
但是,当我尝试运行..
ggnet2(net)
我收到一个错误
Error: Each variable must be a 1d atomic vector or list. Problem variables: 'x', 'y', 'xend', 'yend'
我不清楚这个错误是如何在小插图中出现的,因为net是一个列表,其中的所有变量都是列表.我已经检查过以确保我拥有所有必需的软件包,并且它们是最新的以及最新的R版本.
我刚试过ggnetwork,似乎得到了类似的错误.
有关为何出现此错误的任何想法?
最佳答案 错误消息说
Error: Each variable must be a 1d atomic vector or list. Problem
variables: 'x', 'y', 'xend', 'yend'
如果您执行以下操作
library(ggnetwork)
net <- ggnetwork(net)
class(net$x)
你会发现x是一列矩阵.您的其他组件也是如此.这样做
net$x <- net$x[,1]
net$y <- net$y[,1]
net$xend <- net$xend[,1]
net$yend <- net$yend[,1]
将这些全部更改为1d原子向量和
ggplot(net, aes(x = x, y = y, xend = xend, yend = yend)) +
geom_edges(aes(linetype = "directed"), color = "grey50")
应该管用.您可以阅读有关如何使ggnetwork适用于更漂亮的图表的更多信息.