是否可以将矩阵映射到igraph对象?

时间:2019-04-24 09:27:40

标签: r polygon igraph

我有一个矩阵A,它定义了一个自相交多边形的有序段:

A <- t(matrix(c(
         0,  0  ,
         1,  0  ,
         1, -2  ,
        -2, -2  ,
        -2, -1  ,
         0, -1  ,
         0, -4  ,
        -1, -4  ,
        -1, -2  ,
         2, -2  ,
         2, -3  ,
         0, -3  ,
         0, 0), nrow = 2));

par(mfrow=c(1,3)) 

plot(A, col='red', type= 'l', xlim=c(min(A[,1]),max(A[,1])),
      ylim=c(min(A[,2]),max(A[,2])), xlab='x', ylab='y'); 
points(A, col='black', pch = 22); 
grid()  

我注意将矩阵A映射到无向图,其中点(x,y)对应于顶点,而“ neighboring ”点之间的线段对应于边。右fugure上的红线连接的相邻点(按距离而不是id的编号)。

编辑。在user20650的注释之后,我已将矩阵映射到无向图(图中的中间图)。无向图看起来像预期的结果。但是,使用edge.curved=TRUE选项(浅米色),我们可以看到边缘(3,4)(6,7)(9,10)(12, 13)

library(igraph)
g <- make_empty_graph(n=nrow(A)); 
g <- g + path(seq_len(nrow(A))); 
plot(as.undirected(g), layout=as.matrix(A))
plot(g, layout=as.matrix(A), edge.curved=TRUE)

边的长度必须等于1。根据条件,我们应该在图5和相应的边上添加g面。

对于对(3,4)(3,9)(9,4),我可以删除边缘(12, 13)并添加边缘(9,10)(6,7),依此类推。

问题。是否存在这种映射的方法?

enter image description here

0 个答案:

没有答案