如何传播或整理网络?

时间:2018-09-15 19:21:46

标签: r igraph social-networking

我正在尝试扩展网络或更好地可视化网络。问题是我似乎分散了一些隔离株,并迫使群集进入紧凑的空间,使得很难看到图案。

任何人都没有任何指南来分发群集或更好地可视化数据。如果需要,我可以编辑代码。

谢谢 enter image description here

1 个答案:

答案 0 :(得分:1)

这里有两种获得更好布局的方法。两种解决方案都只需要做一点试验就能找到好的设置。首先,由于您不提供任何数据,因此我将举一个与您类似的示例。

library(igraph)
set.seed(1234)
g1 = erdos.renyi.game(100,0.35)
g2= erdos.renyi.game(10,0.35)
G = add_vertices(g1+g2, 50)
LO = layout_with_fr(G)
plot(G, layout=LO, vertex.size=5, vertex.label="")

Poor layout

解决方案#1 :调整边缘权重
如果您不需要将边缘权重用于其他任何事情,则可以将权重设置为较低的值,这样在连接的点之间就不会产生如此强烈的吸引力。您可能需要尝试找到适合权重的值。

E(G)$weight = 0.01
LO = layout_with_fr(G)
plot(G, layout=LO, vertex.size=5, vertex.label="")

Better layout through edge weights

解决方案2 直接调整布局
您也可以直接调整布局。

首先,我确定哪些节点过于紧密。

CM = components(G)$membership
table(CM)

对于我的图形,组件1是我要扩展的组件。接下来,我只是移动布局,使其位于第一个组件的质心的中心。这不会更改图形;它使我可以轻松调整布局。

LO = layout_with_fr(G)
LO[,1] = LO[,1] - mean(LO[CM == 1,1])
LO[,2] = LO[,2] - mean(LO[CM == 1,2])

但是现在我可以通过任何给定的扩展因子来增长(或收缩)第一个组件。我选择一个(5.5)来占用大部分空白空间。

LO[components(G)$membership == 1,] = LO[components(G)$membership == 1,] * 5.5
plot(G, layout=LO, vertex.size=5, vertex.label="")

Directly adjusted layout

当然,如果您想返回并调整其他组件,也可以这样做。