提取带标签的 Igraph 中的所有三角形

Posted

技术标签:

【中文标题】提取带标签的 Igraph 中的所有三角形【英文标题】:Extract All Triangles in Igraph with Labels 【发布时间】:2016-05-31 19:35:14 【问题描述】:

我创建了一个有 1000 条边的 igraph。我的目标是提取在该 igraph 中找到的所有三角形,但要包括标签而不是数字。我还希望它采用具有 3 列的数据框形式(三角形的每个节点一个)

我尝试过简单地调用:

triangles(graph)

这会返回一个列表,其中包含所有名称的列表:

+ 28431/204 vertices, named:
    [1] node_a                                                
    [2] node_b                   
    [3] node_c 
    [4] node_a                                                
    [5] node_b                   
    [6] node_d                 
    [7] node_a                                                
    [8] node_b                   
    [9] node_e                              
   [10] node_a                                                
+ ... omitted several vertices

当我尝试时:

adjacent.triangles(graph)

它返回所有的数字,但不返回节点的名称:

[1]  15 103  45 121 152  78 325 325   3  35  90   0 488 283   3   0 325 325 325 325  78  21 190   3
[25] 133   0  47 167 167   6   3 325 505 415   0  36  78 325  78  78  90   6 206   6  36   0  78  49

我需要通过 igraph 找到一个函数,它可以给我以下格式的三角形:

COL1         COL2        COL3
node_a       node_b      node_c
node_a       node_b      node_d
node_a       node_b      node_e
node_f       node_g      node_h

任何帮助都会很棒,谢谢!

【问题讨论】:

【参考方案1】:

您可以使用 clique 函数(假设 g 是您的图表),

cl.tri=cliques(g,min=3,max=3)

找到大小为三(三角形)的集团,然后将它们组装成一个数据框,

df<-lapply(cl.tri,function(x)V(g)$name[x])

df2=data.frame(matrix(unlist(df),ncol=3,byrow=T))

【讨论】:

谢谢。那么我是否只需进行索引匹配以查看标签是什么? 是的,您可以在创建数据框之前执行类似 lapply(cl.tri,function(x)V(g)$names[x]) 的操作,或者 apply(df, 2、function(x)V(g)$names[x]) 之后。可能有一种方法可以让 cliques 函数直接返回标签,但我不确定。 这是一个很好的开始,谢谢。当我尝试此操作时,虽然在运行 df=data.frame(matrix(unlist(cl.tri),ncol=3,byrow=T)) 时出现错误,但我尝试了第一个函数 嘿尼克,您可以编辑您的问题以包含一个完整的工作示例吗?否则我只需要推断问题所在。我上面的回答应该使用 V(g)$name[x] 而不是 V(g)$names[x]。这取决于您如何存储节点的名称,但我认为 igraph 默认值在顶点属性“名称”中。 那是错误!谢谢瑞恩。如果需要,您可以对我发布的问题进行回答以获得正确答案,或者我可以删除问题....由您决定

以上是关于提取带标签的 Igraph 中的所有三角形的主要内容,如果未能解决你的问题,请参考以下文章

HTML / CSS - 在导航中的活动选项卡底部添加一个小三角形或箭头

得到三角形带内的三角形?

绘制三角形带时,啥控制 OpenGL 的行为?

在Python中提取完全覆盖矩形空间的随机大小的三角形列表[关闭]

c语言编程,关于不规则三角网的边界提取的

带背景图像的三角形