如何传播或整理网络?

How to spread or unclutter a network?

我正在尝试展开或更好地可视化网络。问题是我所拥有的分离物数量似乎分散了分离物并迫使簇进入紧凑的空间,这使得很难看到模式。

有没有人有传播集群或更好地可视化数据的指南。如果你需要,我可以在代码中编辑。

谢谢

这里有两种方法可以获得更好的布局。这两种解决方案都需要进行一些试验才能找到合适的设置。首先,由于您没有提供任何数据,我将举一个与您的大致相似的示例。

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="")

解决方案 #1 调整边权重
如果您不需要为其他任何事情使用边缘权重,您可以将权重设置为较低的值,这样连接点之间就不会有如此强烈的吸引力。您可能需要进行试验以找到用于权重的良好值。

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

方案#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)占了大部分空space.

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

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