R:igraph 1.0.0 布局算法的潜在问题

R: potential issue with igraph 1.0.0 layout algorithms

请加载以下函数:

weight.community <- function(row,membership,weigth.within,weight.between) {
        if(as.numeric(membership[which(names(membership)==row[1])])==as.numeric(membership[which(names(membership)==row[2])])){
        weight=weigth.within
        }else{
        weight=weight.between
        }
        return(weight)
        }
dump(weight.community,"weight.community.R")
source("weight.community.R")

现在,这是我的问题:使用 igraph<1.0.0,以下命令:

g=erdos.renyi.game(10,0.5)
V(g)$names=as.character(1:10)
membership=c(rep(1,5),rep(2,5))
names(membership)=V(g)$names
E(g)$weight=apply(get.edgelist(g),1,weight.community,membership,50,1)
g$layout=layout.fruchterman.reingold(g,weights=E(g)$weight)
plot(g)

曾经给我一个图表,其中顶点根据社区成员资格分组(如本 thread 所示)。但是在新版本的 igraph 中,layout.fruchterman.reingold 似乎不再响应边权重了。我尝试了新函数名称 layout_with_fr,结果相同。 layout.kamada.kawai 也会发生同样的事情。

我从这些 release notes 中知道

Fruchterman-Reingold and Kamada-Kawai layout algorithms rewritten from scratch

所以,这可能会让我 运行 陷入困境。对于如何解决此问题的任何指导,我将不胜感激。

这可能是在 1.0.0 中引入的 igraph C 核心中的错误。如果查看 layout_fr.c 的源代码,您会发现 weights 参数没有在布局函数中的任何地方使用。

如果您想修复此问题,请在 GitHub 上提交问题。