【问题标题】:finding branches of trees with igraph用 igraph 查找树枝
【发布时间】:2015-11-26 02:41:17
【问题描述】:

这里是新手,所以任何帮助表示赞赏!

我有一个加权树图,我对它的分支感兴趣。我可以使用igraph 轻松找到给定路径之外的分支(即它们的边缘和顶点)吗?假设我有一条直径路径

E(mg, path = diam)

并从该路径分支。我可以找到分支,用它们的权重做统计,询问它们与其他事物的关联等吗?

非常感谢!

可重现的例子:

library(igraph)

g <-erdos.renyi.game(50, 3/50)
mg <- minimum.spanning.tree(g)
diam <- get.diameter(mg)
E(mg)$color = "black"
E(mg, path = diam)$color = "purple"
E(mg, path = diam)$width = 6

所以问题是:如何从 igraph 中的紫色线中提取分支?我想从紫色路径中提取分支并将它们保存在数据框或其他对象中。有什么想法吗?

【问题讨论】:

  • 如果您向reproducible example 提供一些示例输入数据和所需的输出,会更容易为您提供帮助。
  • 我不知道我对原始帖子的编辑是否会提醒您任何更改,或者我对您的回复的回复是否会提醒您,无论如何我都试图更清楚,抱歉没有起初。谢谢
  • 我不明白。您的示例中没有权重。您已经获得了边缘,以便使用E(mg, path = diam) 为它们着色。那么在这个例子中你到底需要什么?
  • 对不起,忽略权重评论。我想要的是一个数据框或其他一些对象,其中包含来自紫色直径路径的分支。我可以很容易地得到紫色线的补码,但我想要单独的分支,我想知道这是否可能。

标签: r igraph


【解决方案1】:

如果你想得到沿紫色线的顶点附带但不包括紫色线的边集,你可以使用

EL <- difference( E(mg)[inc(diam)], E(mg, path = diam) )

我们取所有包含diam 中一个点的边之间的差异,并删除那些位于diam 上的边。我们可以更新图表以使这些边变为蓝色

E(mg)[EL]$color<-"blue"
E(mg)[EL]$width<-6

plot(mg)

【讨论】:

  • 感谢您的回答。我怎样才能得到沿树枝的所有其余边缘,然后将树枝彼此区分开来?即,对于分支 1-32-24-7,我构造黄色边缘,对于分支 23-19-18,我构造红色边缘,等等,然后我保留红色、黄色等分支跨度>
  • 我在fromto 上找不到文档,即E(mg)[ from(EL)]$color = "yellow" 应该将树枝涂成黄色吗?
  • 让我添加一个可能有用的问题改写:我如何首先找到所有不在紫色路径上的点?我如何执行该组补码?
  • 评论不是向问题添加新的重要信息或提出新问题的正确位置。在原始问题中进行更明确的描述会很有帮助。如果您更改了最初提出的问题,您应该只打开一个新问题。
  • 感谢 Flick 先生,仍在学习如何使用它。我在stackoverflow.com/questions/33987043/… 中发布了一个新问题
猜你喜欢
  • 2015-07-17
  • 1970-01-01
  • 2022-01-02
  • 1970-01-01
  • 1970-01-01
  • 2012-07-27
  • 1970-01-01
  • 2011-10-19
  • 1970-01-01
相关资源
最近更新 更多