igraph.to.gexf с несвязанными узлами - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь просмотреть сеть igraph с неподключенными узлами в gephi с помощью команды igraph.to.gexf, однако она выдает ошибку из-за неподключенных узлов:

Ошибка в .parseNodesVizAtt (узлы VizAtt, узлы): Недостаточное количество строк "nodeVizAtt": цвет atts (55 строк), размер (55) У каждого атрибута должно быть то же количество строк, что и у узлов (37)

Кто-то поместил здесь решение для bitbucket несколько лет назад: https://bitbucket.org/gvegayon/rgexf/pull-requests/3/igraphtorgexf-with-disconnected-nodes/diff

но это не работает - как автор этого поста сказал, что есть проблема с источником и целью краев, не указанными, но они никогда не обновлялись. У кого-нибудь есть альтернативное решение?

Пример кода приведен ниже

PubID <- c("169759","174843","174843","174843","174843","174843","171051","171051","171051","171719","171719","171719","169759","173847","173847","177427")
Author <- c("ZJ","RA","DJ","JP","GS","Tv","MC","JR","CW","PB","MD","FO","FO","RA","DJ","KS")
dt <- data.frame(Author,PubID)
dt %>%
  mutate(author_id = as.integer(Author)) -> dt
dt %>%
  inner_join(dt, by = "PubID") %>%
  filter(author_id.x < author_id.y) %>%
  count(Author.x, Author.y) %>%
  graph_from_data_frame(directed = FALSE) -> g1

(rest <- setdiff(Author, V(g1)$name))
g1 <- add.vertices(g1, length(rest), attr = list(name = rest))

plot(g1)


g1.gexf <- igraph.to.gexf(g1) 
f <- file("J:/graph.gexf")
writeLines(g1.gexf$graph, con = f)
close(f)

Использование стандартного igraph.to.gexf удаляет мой неподключенный узел (KS) в этой версии (или выдает сообщение об ошибке в моем реальном файле), а использование модифицированного кода bitbucket теряет все исходные и целевые объекты для краев.

...