往复运动时为边缘指定颜色

时间:2014-03-02 15:25:09

标签: r edges

我有一个标准的边缘清单:

[1]    1 ->  2
[2]    1 ->  3
[3]    1 ->  6
[4]    2 ->  1
[5]    2 ->  3
[6]    2 ->  4
[7]    2 ->  5

我想根据三条规则对边缘进行着色:

  

i)如果第一个值小于第二个值 - >蓝色

     

ii)如果第一个值大于第二个 - >红色

这似乎很简单:

y.ed<-as.edgelist(am.ed)
z<-as.data.frame(y.ed)
m<-z[,1]
n<-z[,2]
o<-ifelse(m<n, "red", "blue")

然而,我想iii)颜色互惠关系,即1->22->1(如上所述)另一种颜色,例如橙子。 我无法弄清楚如何做到这一点。

1 个答案:

答案 0 :(得分:0)

在考虑了这一点之后,我想到这可能是棘手的,有人可能已经这样做了,因为网络在R中是一个相当繁重的应用领域。在igraph包中,如果您可以稍微重新格式化边缘列表,我找到了一种方法。以下是使用组合数据的示例:

library("igraph")
set.seed(11)
ed <- sample(1:10, 30, replace = TRUE)
g <- graph(edges = ed)
str(g)
plot(g)
m <- is.mutual(g)

然后可以使用m中的T / F矢量根据需要为边缘着色。

请注意,在此示例中,在同一节点/顶点和重复边缘上开始和结束的边缘被函数计为“相互”。如果你有那些以及相互的边缘,你可能不得不做一些额外的摆弄。该示例具有一个倒数边(1 -3)。