2015-01-19 2 views
2

У меня есть сеть (igraph) со следующими характеристиками:земля igraph сеть как Gephi Force Atlas 2

>g 
IGRAPH DN-- 3370 16699 -- 
+ attr: name (v/c), grupo (v/n), year (v/n), grupo.freq (v/n), 
    grupo.perc (v/n), vertex.frame.size (v/n), color (v/c), 
    vertex.frame.color (v/c), grupo (e/n), year (e/n), color (e/c) 

после макияжа кластеризации имеет следующие группы:

>table(V(g)$grupo) 
    1 2 8 
1516 1367 487 

У меня есть интерес в который может выделить связь между группами (V(g)$grupo). Я использовал программное обеспечение Gephi с макетом Force Atlas 2 к следующему изображению: http://i.imgur.com/VbcsHtl.png

Мой вопрос, как получить аналогичный результат в R?

Я использую следующий код:

colbar <- rainbow(length(table(V(g)$grupo))) 
V(g)$color <- colbar 
E(g)$color <- colbar 
V(g)$vertex.frame.color <- colbar 
V(g)$vertex.frame.size <- 0.1 

plot.igraph(
      g, 
      layout=layout.fruchterman.reingold.grid, 
      vertex.label=NA, 
      vertex.size=1, 
      edge.lty=1, 
      edge.arrow.size=0.0000001 
      ) 

Следуйте по ссылке, чтобы загрузить данные, я использовал в csv или в Rdata: http://www.datafilehost.com/d/855e3e86

+0

Этот [вопрос] (http://stackoverflow.com/questions/9876267/r-igraph-community-detection-edge-betweenness-method-count-list-members-of-e) может помочь. Возможно, вы сможете адаптировать этот метод в соответствии с вашими потребностями. –

ответ

2

код в R для получения Force Atlas 2 макет доступен сейчас: https://github.com/adolfoalvarez/Force-Atlas-2

Макет еще не разработан как пакет, поэтому вам нужно будет указать код в R и использовать пакет «igraph».

Использование для этого было бы:

library(igraph) 
g <- graph.ring(100) 
layout.forceatlas2(g, iterations=10000, plotstep=500) 
3

Сначала получите пакет ForceAtlas2.

install.packages("devtools") 
if (!require("ForceAtlas2")) devtools::install_github("analyxcompany/ForceAtlas2") 
library("ForceAtlas2") 

Затем, чтобы сделать график g с раскладкой l сделать что-то подобное (здесь со всеми доступными параметрами макета):

g <- erdos.renyi.game(1000, 1/1000) 
l <- layout.forceatlas2(g, directed=TRUE, iterations = 100, 
          linlog = FALSE, pos = NULL, nohubs = FALSE, 
          k = 400, gravity=1, ks=0.1, ksmax=10, delta = 1, 
          center=NULL, tolerance = 0.1, dim = 2, 
          plotstep=10, plotlabels=TRUE) 
plot(g,layout=l) 

Вы можете предоставить варианты, как vertex.size = 3, vertex.color = "red" ну и так далее функции сюжета, если ты хочешь.

Смежные вопросы