r - ggnet2 : Error: Each variable must be a 1d atomic vector or list

标签 r ggplot2

我正在尝试使用 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]

将这些都改变为一维原子向量和
ggplot(net, aes(x = x, y = y, xend = xend, yend = yend)) +
    geom_edges(aes(linetype = "directed"), color = "grey50")

应该管用。您可以阅读有关如何使 ggnetwork 为更漂亮的图形工作的更多信息。

关于r - ggnet2 : Error: Each variable must be a 1d atomic vector or list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42192326/

相关文章:

r - 来自现有相关性和标准差值的泰勒图

r - 使用 R 的轨迹/最佳拟合平均增长曲线和意大利面条图可视化纵向数据

r - ggplot2 binwidth 在 facet_wrap 直方图中没有响应

r - 如何让 geom_boxplot 更改时间序列中组的颜色?

r - 计算 ggplot2 stat_binhex 中 bin 的百分比

r - 将函数参数传递给 dplyr 和 ggplot

R:在堆栈栏上显示字符或类别

r - 使 ggplot 的 strip 文本延伸到轴文本上

r - Dplyr 和 Tidyverse => 有条件替换所有变量(循环遍历数据集)

r - 从 Sublime Text 2 中的另一个构建系统访问构建系统