R中igraph的边缘条件

时间:2016-08-31 10:31:42

标签: r graph igraph

我正在研究igraph试图让我自己可视化从KEGG xml中获取的图形。我已经检索了图形和边缘列表的邻接矩阵。现在我有一些条件用于我的边缘,例如我有抑制,激活和绑定关联(未加权)。现在我想对边缘进行不同的着色,并且我还希望每种条件的边缘形状不同。例如,带有箭头和绿色的边缘用于激活。边缘之后的垂直边缘和红色的边缘用于抑制。也许是绑定关联的虚线。

名为反应的边缘列表如下所示

    > entry1    entry2  name 

    > 59         62     activation
    > 62         57     Inhibition
    > 61         60     binding association
    > 53         42     activation  

我的节点采用有向邻接矩阵的形式。

  plot(G,vertex.shape= "rectangle", edge.arrow.size=.3, edge.color=ifelse(reactions$name =="activation", "green", "red"),vertex.color="gold", vertex.size2=1,vertex.frame.color="gray", vertex.label.color="black", vertex.label.cex=1, vertex.label.dist=0.5, edge.curved=0.2) 

我只是试着检查代码是否适用于激活,然后我处理其他条件,但我的所有边缘都是绿色而不仅仅是激活的。

有些人可以帮我解决这个问题。我尝试将edge.color与ifelse一起使用,但我真的不知道如何使用它。

1 个答案:

答案 0 :(得分:2)

请尝试引用图表本身中的数据,而不是根据数据框中的条件引用变量。在这里,我可以重新创建图表:

library(igraph)

d <- data.frame(ego=c('59', '62', '61', '53'), alter=c('62', '57', '60', '42'), status=c("activation","Inhibition","binding association","activation"))

G <- graph_from_data_frame(d)

让我们看看图中包含的内容:

str(G)

(e/c)告诉我们status是边缘的特征,正是我们想要调整边缘的颜色和/或形状。

plot(G)

plot(G, vertex.shape= "rectangle", edge.arrow.size=.3, edge.color=ifelse(E(G)$status =="activation", "green", "red"), vertex.color="gold", vertex.size2=1, vertex.frame.color="gray", vertex.label.color="black", vertex.label.cex=1, vertex.label.dist=0.5, edge.curved=0.2)