我正在研究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结合使用,但实际上并不知道如何使用它。
与其在数据框中使用条件引用变量,不如尝试在图形本身中引用数据。在这里,我可以重新创建您的图形:
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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句