我一直在尝试使用R中的igraph
包来绘制一个网络图,其中每对节点之间的加权关系介于-4和4之间(-4表示“尽可能远”)。最初,我绘制了数据,可以使用权重来标注链接的粗细,但不会影响布局。修剪“最差”边缘会有所帮助,但是会导致弱链接的节点掉到图上,请参见本示例中的#64和#119,并且似乎不会很好地将“低”值节点分开。我最终想要的是将节点绘制成尽可能靠近“相似”节点,并且远离不同节点。 (编辑:将数据文件中的Weight
更改为weight
会有所帮助,将表述问题更清楚地提出来)
我的代码是,而我的示例日期文件在这里: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)