首页 > 解决方案 > 是否可以将矩阵映射到 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)”点 之间的一段对应于一条边。右图上的红线连接的相邻点(按距离但不是 id 的编号)。

编辑。 在 user20650 发表评论后,我将矩阵映射到无向图(图中的中间图)。无向图看起来像预期的结果。但是通过选项(rigth fugure) ,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。根据条件,我们应该在图中添加5vetriesg和对应的边。

我可以删除边缘(3,4)并添加边缘(3,9)(9,4)来对(12, 13),(9,10)(6,7).

问题。有没有办法进行这种映射?

在此处输入图像描述

标签: rpolygonigraph

解决方案


推荐阅读