igraph: укажите вес в алгоритме макета
Я нашел несколько сообщений (например, здесь и здесь), которые иллюстрируют, как изменить макет путем добавления веса ребра.
Еще когда делаю
require(igraph)
g <- graph.ring(10)
plot(g)
set.seed(28100)
E(g)$weight <- sample(1:10, 10, replace = TRUE)
E(g)$weight
# [1] 4 3 4 6 2 9 5 2 9 7
l <- layout_with_fr(g, weights=E(g)$weight)
plot(g, layout=l)
с R version 3.2.2
а также igraph version 1.0.1
Я получил точно такой же макет. Вместо этого я ожидаю получить макет, в котором ребра с более высоким (меньшим) весом короче (длиннее). Другими словами, узлы, соединенные ребром с большим весом, относительно ближе друг к другу, чем узлы, соединенные ребром с небольшим весом.
Я делаю что-то неправильно?
1 ответ
В новой реализации макета Fruchterman-Reingold (начиная с igraph 1.0.0) была / была ошибка, из-за которой она игнорировала веса. Это уже было исправлено в версии для разработчиков, но похоже, что эта версия еще не была выпущена. Вы можете установить версию для разработки с Github с помощью devtools
пакет:
devtools::install_github("gaborcsardi/pkgconfig")
devtools::install_github("igraph/rigraph")