ggnetwork :: geom_nodes () требует больше цветов, чем узлов - PullRequest
0 голосов
/ 16 ноября 2018

Загрузить ggnetwork, network, sna, igraph и ggplot:

library(igraph)

library(network)

library(sna)

library(ggnetwork)

library(ggplot2)

Создание объекта igraph с пятью вершинами и двумя ребрами:

test <- structure(list(5, TRUE, c(0, 3), c(4, 1), c(0, 1),
                 c(1, 0), c(0, 1, 1, 1, 2, 2),
                 c(0, 0, 1, 1, 1, 2), 
                 list(c(1, 0, 1), 
                 structure(list(),
                .Names = character(0)),
                list(name = c("3", "6", "7", "2", "1")),
                list(weight = c(3.30310760667904, 3.55724789915966))), environment),  
                class = "igraph")

Проверьте количество узлов и ребер:

igraph::ecount(test)
[1] 2

igraph::vcount(test)
[1] 5

Следующий код работает (он не должен работать, обратите внимание, что число значений цвета в geom_nodes () неверно, должно быть пять значений, но задано 7):

ggplot(test,aes(x = x, y = y, xend = xend, yend = yend)) + 
       geom_edges(arrow = arrow(), color = 'black') + 
       geom_nodes(size =10, aes(color=1:7/(7))) + 
       scale_color_gradient(low = "green", high = "red")

enter image description here

Если вместо этого используется правильное количество значений для geom_nodes (aes (color =)), генерируется ошибка:

ggplot(test, aes(x = x, y = y, xend = xend, yend = yend)) +
      geom_edges(arrow = arrow(), color ='black') + 
      geom_nodes(size =10, aes(color=1:5/(5))) + 
      scale_color_gradient(low = "green", high = "red")

Error: Aesthetics must be either length 1 or the same as the data (7): colour

Обратите внимание, что для geom_nodes требуется, чтобы | color | = | узлы | + | ребра | почему это? Это можно обойти? Если передано 7 цветов, как он решает, какие 5 использовать для цветов узла?

...