Подтвердить что ты не робот

Как удлинить края в графике сетки играм (layout = fruchterman.reingold)?

Попытка сделать сетевой график в R. Как удлинить ребра в сетевом графике с помощью IGraph?

Я действительно хочу использовать макет fruchterman-reingold. Есть ли способ сделать этот силовой алгоритм "более весенним", чтобы мои вершины были дальше друг от друга?

спасибо.

4b9b3361

Ответ 1

Вы можете управлять алгоритмом Фрухтермана-Рейнгольда, используя функцию layout.fruchterman.reingold. см. help('layout.fruchterman.reingold'). Настройка, которую я часто использую, и немного больше занимает несколько интервалов:

l <- layout.fruchterman.reingold(g,niter=500,area=vcount(g)^2.3,repulserad=vcount(g)^2.8)
plot(g,layout=l)

где g - ваш объект графика. Лучше всего просто проверить различные значения этих параметров для вашего графика и посмотреть, что работает. Особенно repulserad влияет на интервал в графике. Значение по умолчанию - это квадрат числа узлов, поэтому более высокие значения должны давать вам более разнесенные графики.

Ответ 2

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

L = layout.fruchterman.reingold(G)*s; #Scaling factor s

Возможно, возможны и другие фантазии. Для записи также можно вручную отредактировать макет с помощью мыши tkplot(G, layout=L). Вы можете вернуть координаты через L = tkplot.getcoords(1).