想知道以下情况是否可能:
目前,我在图(图A)中有一个节点子集,它属于另一个单独的较大图(图B)。
在图A上运行布局生成算法时,我想保留与图B相关的节点子集的布局。可以是任何布局算法。
layout.circle(graph, params)
layout.sphere(graph, params)
layout.fruchterman.reingold(graph, ..., dim=2, params)
layout.kamada.kawai(graph, ..., dim=2, params)
layout.spring(graph, ..., params)
layout.reingold.tilford(graph, ..., params)
layout.fruchterman.reingold.grid(graph, ..., params)
layout.lgl(graph, ..., params)
layout.graphopt(graph, ..., params=list())
layout.mds(graph, dist=NULL, dim=2, options=igraph.arpack.default)
layout.svd(graph, d=shortest.paths(graph), ...)
最佳答案
您可以使用minx
或maxx
的miny
,maxy
,layout.fruchterman.reingold()
和layout.kamada.kawai()
自变量完全修复某些顶点。这些参数指定坐标的特定于顶点的下限和/或上限。
对于要修复的顶点,将它们精确设置为要修复的值,对于其他顶点,将minx
设置为一些小的负值(-Inf
也可以使用),然后将maxx
设置为一些大值,(再次,也许Inf
也可以)。
您可能需要在rescale=FALSE
中使用plot.igraph()
参数,以避免对第一张图和第二张图重新缩放整个布局。
编辑:
从手册中:
'minx
'如果不是'NULL
',则它必须是给出
顶点的“ x
”坐标的下边界。的
向量的长度必须与
图形。
'maxx
'与'minx
'类似,但给出了上限。
例如:
g <- graph.star(10, center=1)
minx <- rep(-Inf, vcount(g))
maxx <- rep( Inf, vcount(g))
minx[1] <- 0
maxx[1] <- 0
lay <- layout.fruchterman.reingold(g, minx=minx, maxx=maxx, miny=minx, maxy=maxx)
plot(g, layout=lay)
将第一个顶点固定为(0,0)(可能需要通过重新缩放来修改,为避免重新缩放,请在
rescale=FALSE
中使用plot()
并设置绘图限制)。