2016-11-04 84 views
0

我想在R中使用igraph为图中的三角形着色。下面的图形g有一个蝴蝶结形状,我想以不同的方式对两个三角形着色。以三角形颜色的每条边(igraph)

library(igraph) 
edge_vector <- c(1, 2, 1, 3, 2, 3, 3, 4, 3, 5, 4, 5) 
g <- make_undirected_graph(edge_vector) 
g 
plot(g) 

enter image description here

我可以识别三角形如下,其中每列构成的三角形的三个顶点。

T <- matrix(triangles(g), nrow=3) 
print(T) 
##  [,1] [,2] 
## [1,] 3 3 
## [2,] 1 4 
## [3,] 2 5 

通过列循环,即,对于每个三角形,我可以形成三角形作为数值对三个边缘(例如3,1和3,2和1,2),但我怎样才能然后执行例如,在E(g)的边上查找,以便我可以设置每个边的颜色属性?

我在更大的图中认识到,边缘可能存在多个三角形,但我想知道在这种简单情况下如何做到这一点。

回答

1
colors <- c("blue", "red") 
for (i in seq(ncol(T))){ 
    E(g, c(T[1, i], T[2, i], 
     T[1, i], T[3, i], 
     T[2, i], T[3, i]))$color <- colors[i] 
} 
plot(g) 

enter image description here