有没有办法为igraph中的颜色编码方向性?

时间:2019-07-18 13:51:15

标签: r igraph

我有一些数据可以显示Twitter上人与人之间的联系(即在推文中标记其他用户的人),并希望绘制人与人之间的联系。在某些情况下,这种关系是对等的,因为两个人都标记了对方,而有些人却被标记了但没有发过推文。

在下面的示例中,人A标记了人B和人C,而人C仅标记了人B。箭头从人A->人C和人C->人B是单向的,但在人A <->人B。是否可以使这些箭头使用不同的颜色?

library(igraph)

df <- data.frame (from = c("Person A", "Person A", "Person B", "Person C"),
              to = c ("Person B", "Person C", "Person A", "Person B"),
              weight = c (1, 3, 4, 5)
              )

g_1 <- graph.data.frame(df, 
                    directed = TRUE) 

set.seed(123)
plot (g_1,
  edge.width = E(g_1)$weight)

enter image description here

2 个答案:

答案 0 :(得分:2)

可以选择color的边颜色指定E自变量,并且借助is.mutual()函数可以找到倒数边:

E(g_1)$color <- "grey50"
E(g_1)$color[is.mutual(g_1)] = "red"
plot(g_1, edge.width = E(g_1)$weight)

enter image description here

答案 1 :(得分:1)

您可以使用pub fn trigger_listeners<t>(listeners: &mut Vec<&mut T>) where T: Listener + ?Sized { for x in listeners { x.trigger(); } } 函数为双向边缘着色(取自R reciprocal edges in igraph in R并经过修改以着色而不是弯曲):

duplicated()

完整示例:

E(g_1)[duplicated(E) | duplicated(E,fromLast =TRUE)]$color <- "red"