У меня есть igraph g
и определенные треугольники Triangles
.Мне нужно назначить цвет для каждого треугольника.Но одна вершина может быть в двух или более треугольниках.Например, вершины A8
и A13
в треугольнике (A10, A8, A13)
и треугольник (A2, A8, A13)
(левый рисунок).
Мой пример кода приведен ниже. Я назначаю цвет в цикле for, и можно увидеть только последний цвет вершин.Я ищу вершины пирога.Ожидаемый результат на правильном рисунке.
Здесь - соответствующий вопрос и ответ.
Вопрос. Как определить 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
)