我有一个矩阵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 号)通过右图上的红线连接。
Edit.在 user20650 的评论之后,我已将矩阵映射到无向图(图中的中间图)。无向图看起来像是预期的结果。但随着edge.curved=TRUE
选项(右图)我们看到边缘(3,4)
, (6,7)
, (9,10)
and (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)
and (9,4)
以此类推(12, 13)
, (9,10)
and (6,7)
.
问题。有没有办法进行这种映射?