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

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

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

Благодарю.

2 ответа

Вы можете управлять алгоритмом Фрухтермана-Рейнгольда, используя 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 влияет на расстояние в графике. По умолчанию это квадрат числа узлов, поэтому более высокие значения должны давать вам более разнесенные графики.

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

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

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

Другие вопросы по тегам