答案 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="")
解决方案#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)来占用大部分空白空间。
LO[components(G)$membership == 1,] = LO[components(G)$membership == 1,] * 5.5
plot(G, layout=LO, vertex.size=5, vertex.label="")
当然,如果您想返回并调整其他组件,也可以这样做。