我试图在igraph中制作一个网络图,通过对它们进行着色来突出显示某些重要边缘。对于大图,他们经常被埋在其他人之下。例如:如何重新排列igraph图中边缘的顺序?
library(igraph)
test <- barabasi.game(200,m=2)
E(test)$color <- "gray"
E(test)[1]$color <- "red"
sort(order(E(test)$color)[E(test)],decreasing=TRUE)
plot(test,
vertex.label=NA,
vertex.shape="none",
vertex.size=0,
edge.arrow.mode=0,
edge.width=2)
给我一个情节,其中单个红色边缘在底部。 如果我选择颜色较高的边缘(而不是#1),它有更好的机会不被埋葬。
所以在我看来,一种选择是以某种方式重新排序边缘。我试过
E(test) <- E(test)[order(E(test)$color)]
但这样会导致“无效索引”错误。关于我还应该尝试什么的任何想法?
谢谢,陶!绘图 - 两次解决方案对我来说最合适。我使用'set.seed()'来确保我的布局是可重现的,在绘制一次后,我使用'E(test)[E(test)$ color ==“gray”] $ color < - NA'确保灰色边缘被隐藏起来,并且在第二次调用plot()时加入“add = TRUE”。 – cjolley
您也可以显式调用布局函数并将其结果存储在变量中 - 然后您可以稍后在'plot()'的'layout = ...'参数中传递此变量。 –
您也可以生成一次布局,然后将其存储到图形中。如果您设置了g $布局属性,该图将自动使用存储在那里的布局。在这种情况下,您可以将布局存储到图形中,然后将新图形布局设置为与旧图形布局相同。 – wmsmith