igraph情节:如何将被困节点带到前面?

时间:2018-05-31 06:01:57

标签: r plot igraph

以下网络拥有大约13K节点和5个大社区。但是,其中两个社区陷入了这种布局。我使用以下代码生成了这个图:

{{1}}

更改区域参数也没有帮助。如何更正绘图以查看所有节点而不减少vertex.size?

qgraph layout

1 个答案:

答案 0 :(得分:1)

根据提供的数据(评论中的链接),这个答案已经完全重新修改。此外,您似乎实际上有6个社区,而不是5个。

我将使用您提供的数据并从您的代码开始 有一些小的变化。您使用qgraph包,我会 坚持igraph。您还可以使用创建布局 qgraph.layout.fruchtermanreingold。我会用layout_with_lgl 来自igraph。否则,我的起点就是你的代码。

library(igraph)

load("temp/networkplot_so.RData")
col=c("#5150a7","#c3200f","#ed9718","#017acb","#FFC0CB","#9c9bd5")

set.seed(1234)
lay = layout_with_lgl(g)
plot(g,layout=lay,vertex.color=col[V(g)$community],
    vertex.label =NA, vertex.size= 2) 

Graph_01

获得更有用的演示文稿的方法是从现有的开始 布局和移动的东西。我们希望能够看到不同的东西 社区,但它们在中心都相互重叠。 为了解决这个问题,我们将每个社区从一个不同的中心移开 方向(除了我们在中间留下的最大的集群)。 首先,我想了解移动集群的数量

summary(lay)
       V1              V2       
 Min.   :-2871   Min.   :-6293  
 1st Qu.: 1710   1st Qu.: 2344  
 Median : 2411   Median : 3541  
 Mean   : 3108   Mean   : 3285  
 3rd Qu.: 4300   3rd Qu.: 4397  
 Max.   :15712   Max.   : 8500 

这显示了点数在均值附近变化的程度。由此, 我猜我们应该将集群移动大约7000个单位。 尝试7000后,我调整了数字,使它更好一点。 经过我的调整,这是我结束的地方。

LO2 = lay
LO2[V(g)$community == 1,1] = LO2[V(g)$community == 1,1] + 10000
LO2[V(g)$community == 2,2] = LO2[V(g)$community == 2,2] - 7000
LO2[V(g)$community == 3,1] = LO2[V(g)$community == 3,1] - 10000
LO2[V(g)$community == 4,2] = LO2[V(g)$community == 4,2] + 7000
LO2[V(g)$community == 5,1] = LO2[V(g)$community == 5,1] + 6000
LO2[V(g)$community == 5,2] = LO2[V(g)$community == 5,2] + 5000

plot(g,layout=LO2,vertex.color=col[V(g)$community],
    vertex.label =NA, vertex.size= 2) 
legend("bottomleft", legend=1:6, pch=20, cex=0.5, col=col)

Graph_02

您可以看到每个社区。它看起来像第6组 真的的核心。其他较小的组连接到6, 但彼此并没有那么多。你可能想调整一下 布局不同以强调其他关系,但是 这应该是一个好的开始。