r - R 中 igraph 的边缘条件

标签 r graph igraph

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

名为 react 的边缘列表如下所示

    > 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) 

关于r - R 中 igraph 的边缘条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39247190/

相关文章:

在 R 中读取有向图

r - 如何在 ggplot2 中仅绘制图例?

r - 无法从 SparkR 创建的 DataFrame 中检索数据

r - 将元素添加到 R 中的列表(在嵌套列表中)

从两组中随机取出相等数量的元素——从一个具有相同数量元素的数据帧创建两个子数据帧

matlab - 在两条曲线之间绘制

c# - 无法在 C# 和 Graph Explorer 中从 Sharepoint Graph 获取云端硬盘项目和云端硬盘文件夹

R Shiny -启用键盘快捷键?

python - 在图形上进行深度优先运行时两次访问节点

performance - 迭代且高效地将元素添加到 R igraph 中顶点的列表属性