Как создать макет, который будет отображать узлы в одной группе близко друг к другу? - PullRequest
0 голосов
/ 17 апреля 2019

Используя igraph, я стремлюсь использовать подходы обнаружения сообществ, так как я хотел бы нарисовать сетевой макет, который делает видимыми отдельные сообщества и их связи.

Пока это мой код:

library(igraph)

dat=read.csv(file.choose(),header=TRUE) # choose an edgelist in .csv file format

У меня есть фрейм данных со следующими параметрами:

  > 
    > Var1 = node 1  Var2 = node 2 Value = edges (markov chain probabilities)
    > 
    >
    > head (dat, 100)
    >         Var1 Var2       value
    >     1      4    4 0.833333333
    >     2     10    4 0.000000000
    >     3     11    4 0.000000000
    >     4     12    4 0.000000000
    >     5     13    4 0.000000000
    >     6     21    4 0.000000000
    >     7     23    4 0.000000000
    >     8     31    4 0.000000000
    >     9     41    4 0.000000000
    >     10    42    4 0.000000000
    >     11    43    4 0.000000000
    >     12    44    4 0.000000000
    >     13    45    4 0.000000000
    >     14    46    4 0.000000000
    >     15    47    4 0.000000000
    >     16    48    4 0.000000000
    >     17    52    4 0.000000000
    >     18    53    4 0.000000000
    >     19    61    4 0.000000000
    >     20    62    4 0.000000000
    >     21    63    4 0.000000000
    >     22    71    4 0.000000000
    >     23    81    4 0.000000000
    >     24    82    4 0.000000000
    >     25    83    4 0.000000000
    >     26    91    4 0.000000000
    >     27    92    4 0.000000000
    >     28    93    4 0.000000000
    >     29   100    4 0.000000000
    >     30   111    4 0.000000000
    >     31     4   10 0.000000000
    >     32    10   10 0.000000000
    >     33    11   10 0.000000000
    >     34    12   10 0.010695187
    >     35    13   10 0.000000000
    >     36    21   10 0.000000000
    >     37    23   10 0.000000000
    >     38    31   10 0.000000000
    >     39    41   10 0.010869565
    >     40    42   10 0.000000000
    >     41    43   10 0.000000000
    >     42    44   10 0.000000000
    >     43    45   10 0.000000000
    >     44    46   10 0.000000000
    >     45    47   10 0.000000000
    >     46    48   10 0.000000000
    >     47    52   10 0.000000000
    >     48    53   10 0.000000000
    >     49    61   10 0.000000000
    >     50    62   10 0.074074074
    >     51    63   10 0.000000000
    >     52    71   10 0.000000000
    >     53    81   10 0.000000000
    >     54    82   10 0.000000000
    >     55    83   10 0.000000000
    >     56    91   10 0.000000000
    >     57    92   10 0.000000000
    >     58    93   10 0.000000000
    >     59   100   10 0.010526316
    >     60   111   10 0.018867925
    >     61     4   11 0.166666667
    >     62    10   11 0.000000000
    >     63    11   11 0.973409307
    >     64    12   11 0.010695187
    >     65    13   11 0.126126126
    >     66    21   11 0.000000000
    >     67    23   11 0.000000000
    >     68    31   11 0.000000000
    >     69    41   11 0.000000000
    >     70    42   11 0.008928571
    >     71    43   11 0.000000000
    >     72    44   11 0.038461538
    >     73    45   11 0.000000000
    >     74    46   11 0.000000000
    >     75    47   11 0.000000000
    >     76    48   11 0.000000000
    >     77    52   11 0.000000000
    >     78    53   11 0.000000000
    >     79    61   11 0.000000000
    >     80    62   11 0.000000000
    >     81    63   11 0.333333333
    >     82    71   11 0.000000000
    >     83    81   11 0.000000000
    >     84    82   11 0.000000000
    >     85    83   11 0.000000000
    >     86    91   11 0.071428571
    >     87    92   11 0.006622517
    >     88    93   11 0.000000000
    >     89   100   11 0.005263158
    >     90   111   11 0.018867925
    >     91     4   12 0.000000000
    >     92    10   12 0.000000000
    >     93    11   12 0.003798670
    >     94    12   12 0.673796791
    >     95    13   12 0.099099099
    >     96    21   12 0.000000000
    >     97    23   12 0.000000000
    >     98    31   12 0.029702970
    >     99    41   12 0.141304348
    >     100   42   12 0.017857143
    > 
    >     dim (dat)
    >     [1] 900   3








g = graph.data.frame(dat[,c('Var1','Var2')], directed = F)  # coerces the data into a two-column matrix format that igraph likes

cluster=cluster_walktrap(g)

list=groups (cluster)

g$value<-cluster$membership[as.character(g$Var1)]

g <- simplify(g) # remove loops and multiple edges



plot( cluster,g,  vertex.size = 5, edge.width = .1)

Вывод не имеет никакого смысла для меня.Не могли бы вы мне помочь, пожалуйста?Спасибо

Output

1 Ответ

0 голосов
/ 17 апреля 2019

Используя очень незначительные изменения в вашем коде, я получаю понятный результат (хотя я использую только 100 баллов, которые вы предоставили).Ваш код набрал simplify после вы набрали cluster_walktrap.Я побежал simplify первым.Я также установил случайное семя, чтобы результаты были воспроизводимыми.Я получил.

library(igraph)
g = graph.data.frame(dat[,c('Var1','Var2')], directed = F)  # coerces the data into a two-column matrix format that igraph likes
g <- simplify(g) # remove loops and multiple edges
cluster=cluster_walktrap(g)
list=groups (cluster)
g$value<-cluster$membership[as.character(g$Var1)]
set.seed(123)
plot(cluster,g,  vertex.size = 5, edge.width = .1)

Cluster graph

Это довольно четко состоит из двух групп;синие узлы в одной группе, оранжевые узлы в другой.Ссылки, соединяющие узлы в одной группе, черные.Те ссылки, которые связывают узлы в разных группах, выделены красным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...