【问题标题】:How to convert a tree to a dendrogram in R?如何将树转换为 R 中的树状图?
【发布时间】:2011-11-18 17:29:56
【问题描述】:

如何在 R 中将树(这是我的 Java 程序的输出)转换为树状图?

目前,我正在使用here 给出的建议将树转换为 Newick 格式。然后我使用 R 中的 ape 包来读取 Newick 格式的树:

library("ape")
cPhylo <- read.tree(file = "gc.tree")

最后我在 R 中使用as.hclust 将树转换为树状图:

dendrogram <- as.hclust(gcPhylo)

但是,树状图需要分支长度。尽管我插入了分支长度,但我收到一条错误消息,指出树不是超度量:

as.hclust.phylo(gcPhylo) 中的错误:树不是超度量的

我想我在插入分支长度时做错了。

我还有其他方法可以遵循吗?或者如何在将树转换为 Newick 格式时插入分支长度?相等的分支长度会很好。

【问题讨论】:

  • 查看?as.hclust 的帮助 - 这只能将对象从类twins 转换为hclust。因此,您的代码肯定不会工作。至于如何使它工作,我很抱歉,但我不知道。
  • 那么,这意味着与分支长度无关。所以无法使用 as.hclust 进行转换。那我需要另找方法。

标签: r tree dendrogram


【解决方案1】:

我认为问题实际上在于您的“gc.tree”不是超度量。确保从根部到每个尖端的距离相同。以下代码有效:

library('ape')
tree <- read.tree(text='(((A:4.2,B:4.2):3.1,C:7.3):6.3,D:13.6);')
is.ultrametric(tree)
is.binary.tree(tree)
is.rooted(tree)
hc <- as.hclust.phylo(tree)

但要使树非超长(注意 D 的分支长度):

tree <- read.tree(text='(((A:4.2,B:4.2):3.1,C:7.3):6.3,D:15);')

而 as.hclust.phylo 会引发错误。

【讨论】:

    【解决方案2】:

    这是一个老问题,但到目前为止还没有足够的答案。由于我遇到了同样的问题,而且我的 googlefoo 在找到答案时遇到了问题,所以你去:

    library("ape")
    cPhylo <- read.tree(file = "gc.tree")
    dendrogram <- chronos(cPhylo)
    

    【讨论】:

      【解决方案3】:

      这是一个老问题,但之前的所有答案都要求在转换为树状图对象之前对树进行超度量。

      您可以使用 DECIPHER 包从 Newick 格式的文件中读取树状图对象:

      dend <- ReadDendrogram(path_to_newick_file)
      

      【讨论】:

        猜你喜欢
        • 2013-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-07
        • 2012-04-22
        • 1970-01-01
        相关资源
        最近更新 更多