R полностью взаимосвязанный взвешенный граф - PullRequest
0 голосов
/ 05 июля 2018

Я пытался использовать пакет igraph в R для построения графика сети, где каждая пара узлов имеет взвешенное соотношение между -4 и 4 (-4 означает «как можно дальше друг от друга») Когда я строил график Исходя из данных, я смог использовать вес для аннотирования толщины ссылок, но не влиял на макет. Обрезка «худших» ребер помогает немного, но затем приводит к тому, что слабосвязанные узлы падают с графика, см. № 64 и № 119 в этом примере, и, похоже, узлы с «низким» значением не очень хорошо разводят. В конечном итоге я хочу, чтобы узлы отображались как можно ближе к «похожим» узлам и как можно дальше от разных узлов. (редактирование: изменение Weight на weight в файле данных помогло, переформулирует вопрос, чтобы более четко задавать его) enter image description here

у меня есть код, и я примерил здесь образцы дат: https://www.dropbox.com/s/kuqo3a8twa149gd/paris_rouen.zip?dl=0

datefile_base <- "paris_rouen_utrecht"
nodes <- read.csv(paste(datefile_base, "-nodes.csv", sep=""), header=T, as.is=T)

links <- read.csv(paste(datefile_base, "-edge.csv", sep=""), header=T, as.is=T)
library(igraph)
require(stats)

net <- graph_from_data_frame(d=links, vertices=nodes, directed=F) 
simplify(net, edge.attr.comb=list(weight="sum","ignore"))
translucent <- rainbow(5, alpha=.5)
V(net)$color <- translucent[V(net)$UseNumber]

plot.new
cut.off <- quantile(links$Weight)["75%"] 
net.sp <- delete_edges(net, E(net)[Weight<cut.off])
layout_with_fr(net.sp)
plot(net.sp) 
legend("topleft", c("Paris","Rouen", "Utrecht", "Unknown"), pch=21,
       col="#777777", pt.bg=translucent, pt.cex=2, cex=.8, bty="n", ncol=1)
...