我正在尝试用 R 中的 igraph 绘制一个网络,其中边按权重排序。我已经指定了颜色,但我想要背面的弱边缘和前面的强边缘。有办法做到这一点吗? 谢谢
最佳答案
这是一个可能的解决方案。这实际上取决于您正在使用的内容,因此通过代码示例我可以改进这一点。
基本上,边是按照它们出现的顺序绘制的。所以我们需要根据边的权重属性对边进行排序。这似乎不可能在同一个图中完成,因此可能只需要创建一个具有相同属性但边缘已排序的新图。
g <- graph( c(1,2, 1,3,1,4,1,5,2,3,2,4,2,5,3,4,3,5,4,5), n=5 )
E(g)$weight <- runif(10)
# Generates a the same graph but with edges sorted by weight.
h <- graph.empty() + vertices(V(g))
h <- h + edges(as.vector(t(get.edgelist(g)[order(E(g)$weight),])))
E(h)$weight <- E(g)$weight[order(E(g)$weight)]
E(h)$color <- "red"
E(h)[weight>0.3]$color <- "yellow"
E(h)[weight>0.7]$color <- "green"
plot(h,edge.width=2+3*E(h)$weight)
关于r - 使用 R igraph 根据权重绘制边缘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25269705/