我有一个igraph g
和其中定义的三角形Triangles
。我需要为每个三角形分配一种颜色。但是一个顶点可以是两个或更多个三角形。例如,三角形A8
和三角形A13
中的顶点(A10, A8, A13)
和(A2, A8, A13)
(左图)。
我的示例代码如下。我在for循环中分配了颜色,一个人只能看到顶点的最后一种颜色。我正在寻找饼形顶点。预期结果在正确的数字中。
Here是相关的问答。
问题。如何为values
定义vertex.pie=values
? degree()
函数是否可能?
library(igraph)
df <- data.frame(
from = c("A2", "A5", "A5", "A5", "A7", "A7", "A7", "A8", "A8", "A8", "A10", "A10", "A13", "A13", "A13", "A14", "A14", "A14", "A18", "A18", "A18", "A19", "A19", "A19", "A20", "A20", "A20", "A21", "A21", "A21", "A24", "A24", "A24", "A25", "A25", "A25"),
to = c("A8", "A20", "A21", "A24", "A20", "A21", "A24", "A2", "A10", "A13", "A8", "A20", "A2", "A8", "A10", "A7", "A19", "A25", "A19", "A20", "A24", "A14", "A20", "A25", "A18", "A21", "A24", "A7", "A20", "A24", "A5", "A7", "A20", "A18", "A19", "A24")
)
g <- graph.data.frame(d = df, directed = TRUE)
V(g)$color <- "white"
V(g)$id <- c(2, 5, 7, 8, 10, 13, 14, 18, 19, 20, 21, 24, 25)
Triangles <- t(matrix(
c(7, 8, 2, 14, 18, 20, 7, 7, 5,
21, 10, 8, 19, 20, 21, 20, 20, 20,
24, 13, 13, 25, 24, 24, 21, 24, 24), ncol=3))
# Create a palette
n = dim(Triangles)[2]
palette <- rainbow(n)
for(i in 1:n){
V(g)[V(g)$id %in% Triangles[,i]]$color=palette[i]
}
coords <- layout_in_circle(g,
order = order(V(g)$id))
plot(g, #edge.curved=TRUE,
edge.arrow.size=0.0,
main = "Triangles",
layout = coords
)