igraph:解决紧密重叠的节点

rmf*_*rmf 11 r igraph

我有一个包含几百个节点和边的图.断开连接的子图分离出来并很好地解决,但子图中的节点重叠并且不能很好地解析.我尝试了几种布局算法,并尝试更改布局算法中的相关参数(例如:iter,kkconst,start.temp等).但是,我仍然无法驱散紧密集群的节点.见下图.

我希望找到一些参数来控制吸引力/排斥/重力等,但似乎没有.答案和人物bdemarest在这个问题似乎解决正是这个问题.奇怪的是,在新版本的igraph(coolex,maxdelta,area,repulserad等)中已经弃用了几个看似有用的参数.

有没有人知道如何保持子图很好地分离,同时扩展出足够接近的节点,使它们不重叠?

图

rmf*_*rmf 12

我设法使用包来运行它qgraph.

在此输入图像描述

这是一个工作示例:

library(igraph)
library(qgraph)

g <- barabasi.game(355, directed=FALSE)

png("plot1.png", height=6, width=12, units="in", res=250)
par(mfrow=c(1, 3))

plot(g,layout=layout_with_fr,vertex.size=4,vertex.label=NA)
mtext("layout_with_fr", side=1)

e <- get.edgelist(g)
l <- qgraph.layout.fruchtermanreingold(e,vcount=vcount(g))
plot(g,layout=l,vertex.size=4,vertex.label=NA)
mtext("qgraph.layout.fruchtermanreingold default", side=1)

l <- qgraph.layout.fruchtermanreingold(e,vcount=vcount(g),
      area=8*(vcount(g)^2),repulse.rad=(vcount(g)^3.1))
plot(g,layout=l,vertex.size=4,vertex.label=NA)
mtext("qgraph.layout.fruchtermanreingold modified", side=1)

dev.off()
Run Code Online (Sandbox Code Playgroud)

fig2

  • @mf在你的代码中,'e < - get.edgelist(g)'需要包含索引.然后,您需要更改'e < - get.edgelist(g,names = False)' (2认同)
  • @fmassica 这对我有用,但 `False` 会产生错误。正确的语法是“F”或“FALSE”。 (2认同)