Как удлинить края в графике сетки играм (layout = fruchterman.reingold)?
Попытка сделать сетевой график в R.
Как удлинить ребра в сетевом графике с помощью IGraph?
Я действительно хочу использовать макет fruchterman-reingold. Есть ли способ сделать этот силовой алгоритм "более весенним", чтобы мои вершины были дальше друг от друга?
спасибо.
Ответы
Ответ 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)
.