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")
Другие вопросы по тегам