Построение igraph: Как вывести запертые узлы вперед? - PullRequest
0 голосов
/ 31 мая 2018

В следующей сети около 13 тыс. Узлов с 5 большими сообществами.Тем не менее, два сообщества попали под эту схему.Я сгенерировал этот график, используя этот код:

library(qgraph)
col=c("#5150a7","#c3200f","#ed9718","#017acb","#FFC0CB","#9c9bd5")
e <- as.data.frame(get.edgelist(g))
lay <- qgraph.layout.fruchtermanreingold(e,vcount=vcount(g))
plot(g,layout=lay,vertex.color=col[V(g)$community],vertex.label =NA, vertex.size= 2) 

Изменение параметра площади также не помогло.Как я могу исправить график, чтобы увидеть все узлы без уменьшения vertex.size?

qgraph layout

1 Ответ

0 голосов
/ 01 июня 2018

На основании предоставленных данных (ссылка в комментариях) этот ответ был полностью переработан.Кроме того, похоже, что у вас действительно было 6 сообществ, а не 5.

Я буду использовать предоставленные вами данные и начну с вашего кода, но с некоторыми небольшими изменениями.Вы используете пакет qgraph, а я просто придерживаюсь igraph.Также вы создаете свой макет с qgraph.layout.fruchtermanreingold.Я буду использовать layout_with_lgl от igraph.В противном случае мое начальное место - ваш код.

library(igraph)

load("temp/networkplot_so.RData")
col=c("#5150a7","#c3200f","#ed9718","#017acb","#FFC0CB","#9c9bd5")

set.seed(1234)
lay = layout_with_lgl(g)
plot(g,layout=lay,vertex.color=col[V(g)$community],
    vertex.label =NA, vertex.size= 2) 

Graph_01

Чтобы получить более полезную презентацию, нужно начать с существующего макета и перейтивещи вокругМы хотим видеть разные сообщества, но все они накладываются друг на друга в центре.Чтобы исправить это, мы перемещаем каждое сообщество от центра в другом направлении (кроме самого большого кластера, который мы оставляем в середине).Во-первых, я хочу получить представление о , сколько , чтобы переместить кластеры.

summary(lay)
       V1              V2       
 Min.   :-2871   Min.   :-6293  
 1st Qu.: 1710   1st Qu.: 2344  
 Median : 2411   Median : 3541  
 Mean   : 3108   Mean   : 3285  
 3rd Qu.: 4300   3rd Qu.: 4397  
 Max.   :15712   Max.   : 8500 

Это показывает, насколько точки меняются вокруг среднего значения.Исходя из этого, я предположил, что мы должны переместить кластеры примерно на 7000 единиц.После попытки 7000 я скорректировал числа, чтобы сделать его немного лучше.После моих корректировок, вот где я оказался.

LO2 = lay
LO2[V(g)$community == 1,1] = LO2[V(g)$community == 1,1] + 10000
LO2[V(g)$community == 2,2] = LO2[V(g)$community == 2,2] - 7000
LO2[V(g)$community == 3,1] = LO2[V(g)$community == 3,1] - 10000
LO2[V(g)$community == 4,2] = LO2[V(g)$community == 4,2] + 7000
LO2[V(g)$community == 5,1] = LO2[V(g)$community == 5,1] + 6000
LO2[V(g)$community == 5,2] = LO2[V(g)$community == 5,2] + 5000

plot(g,layout=LO2,vertex.color=col[V(g)$community],
    vertex.label =NA, vertex.size= 2) 
legend("bottomleft", legend=1:6, pch=20, cex=0.5, col=col)

Graph_02

Вы можете увидеть каждое из сообществ.Похоже, группа 6 действительно является центральной.Другие меньшие группы соединяются с 6, но не так много друг с другом.Возможно, вы захотите изменить макет по-другому, чтобы подчеркнуть другие отношения, но это должно стать хорошим началом.

...