如何在igraph + R中保持节点的位置 [英] How to keep position of nodes in igraph + R

查看:396
本文介绍了如何在igraph + R中保持节点的位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我有以下图形,并使用矢量设置节点的位置坐标:

If I have the following graph and I set the position coordinates of nodes with a vector:

library(igraph)
library(Cairo)

g9<- graph(c(0,1,0,2,0,3,1,4,1,2,3,4,3,5,4,5,5,2),n=6,dir=FALSE)
V(g9)$name<-c(1:6)
V(g9)$label<-V(g9)$name
coords <- c(0, 0, 1.00000000000000, 0,0.500000000000000, 0.866025403784439, 0.300000000000000, 0.200000000000000, 0.441421356237309, 0.341421356237310,0.248236190979496,0.393185165257814)
coords <- matrix(coords, 6,2,byrow=T)
plot(g9,layout=coords)


现在,如果我添加以下代码,则必须再次设置坐标布局:


Now if I add the following code, I have to set the coordinate layout again:

vc<-c(0,1,1,2,2,3,3,1)
gp<-graph(vc,dir=FALSE);
listSub<-graph.get.subisomorphisms.vf2(g9,gp)

m<-matrix(c(unlist(listSub)),length(listSub),length(unique(vc)),byrow=T)
md<-m[!duplicated(m[,1]),]

g<-delete.vertices(g9,c(m[1,2]))

dev.new()

coord <- c(0, 0, 1.00000000000000, 0,0.500000000000000, 0.866025403784439, 0.441421356237309, 0.341421356237310,0.248236190979496,0.393185165257814)
coord <- matrix(coord, 5,2,byrow=T)
plot(g,layout=coord)


如何将这些布局位置设置为默认位置-以便我可以在图形结构上进行修改而不会丢失每个名称的对应位置?


How do I make these layout positions the default -- so that I can make modifications on the graph's structure without losing the corresponding position for each name?

推荐答案

您可以保留初始的coord矩阵 并仅提取子图所需的行.

You could keep the initial coord matrix and only extract the rows needed for the subgraph.

plot(g9, layout = coords[ V(g9)$name, ])
plot(g , layout = coords[  V(g)$name, ])

这篇关于如何在igraph + R中保持节点的位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆