Как указать правило для присвоения вершине более одного цвета? - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть igraph g и определенные треугольники Triangles.Мне нужно назначить цвет для каждого треугольника.Но одна вершина может быть в двух или более треугольниках.Например, вершины A8 и A13 в треугольнике (A10, A8, A13) и треугольник (A2, A8, A13) (левый рисунок).

enter image description here

Мой пример кода приведен ниже. Я назначаю цвет в цикле 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
)
...