Как выкладывать сеть? - PullRequest
       40

Как выкладывать сеть?

0 голосов
/ 15 сентября 2018

Я пытаюсь разложить или лучше визуализировать сеть.Проблема заключается в количестве изолятов, которые, как мне кажется, распределяют изоляты и заставляют кластеры образовывать компактные пространства, что затрудняет просмотр рисунков.

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

Спасибо enter image description here

1 Ответ

0 голосов
/ 15 сентября 2018

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

library(igraph)
set.seed(1234)
g1 = erdos.renyi.game(100,0.35)
g2= erdos.renyi.game(10,0.35)
G = add_vertices(g1+g2, 50)
LO = layout_with_fr(G)
plot(G, layout=LO, vertex.size=5, vertex.label="")

Poor layout

Решение # 1 Настройка веса ребер
Если вам не нужно использовать веса ребердля всего остального вы можете просто установить веса на что-то низкое, чтобы между соединенными точками не было такого сильного притяжения.Возможно, вам придется поэкспериментировать, чтобы найти подходящее значение для весов.

E(G)$weight = 0.01
LO = layout_with_fr(G)
plot(G, layout=LO, vertex.size=5, vertex.label="")

Better layout through edge weights

Решение # 2 Прямая настройка макета
Вы также можете напрямую настроить макет.

Сначала я определяю, какие узлы слишком тесно сгруппированы.

CM = components(G)$membership
table(CM)

Для моего графа компонент 1 - это тот, который я хочу расширить.Затем я просто смещаю макет так, чтобы он центрировался по центру первого компонента.Это не меняет график;это просто позволяет мне настроить макет.

LO = layout_with_fr(G)
LO[,1] = LO[,1] - mean(LO[CM == 1,1])
LO[,2] = LO[,2] - mean(LO[CM == 1,2])

Но теперь я могу увеличивать (или уменьшать) первый компонент на любой заданный коэффициент расширения.Я выбираю один (5.5), чтобы занять большую часть пустого пространства.

LO[components(G)$membership == 1,] = LO[components(G)$membership == 1,] * 5.5
plot(G, layout=LO, vertex.size=5, vertex.label="")

Directly adjusted layout

Конечно, если вы хотите вернуться и настроить другиекомпоненты, вы могли бы сделать это тоже.

...