Использование edge.width = E(g)$weight
- правильная идея, но вам нужно получить правильный вес. graph.strength(g)
является свойством вершин, но вам нужен вес для ребер. Я не знаю функции, которая напрямую вычисляет, сколько ребер существует между двумя вершинами, но написать ее несложно.
Сначала получите версию графа с одним ребром между каждой парой связанных вершин.
g2 = simplify(g)
Теперь нам нужно получить правильный вес для ребер g2. Если ребро соединяет две вершины, все кратчайшие пути, соединяющие эти две вершины, будут одиночными ребрами, поэтому для каждого ребра упрощенного g2 нам нужно найти количество кратчайших путей (ребер) между этими вершинами в исходном g. Тогда мы можем построить.
E(g2)$weight = sapply(E(g2), function(e) {
length(all_shortest_paths(g, from=ends(g2, e)[1], to=ends(g2, e)[2])$res) } )
plot(g2,
vertex.size=15,
vertex.label.dist=0.5,
vertex.label.cex=0.8,
vertex.label.degree=-pi/2,
edge.width=E(g2)$weight,
layout=layout_with_kk,
margin=-0.2)
(Я немного изменил ваше утверждение для улучшения читаемости.)