如何在R中将树转换为树状图?

时间:2011-09-16 13:48:24

标签: r tree dendrogram

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

目前,我正在使用给定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格式时插入分支长度?等分支长度没问题。

3 个答案:

答案 0 :(得分:5)

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

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

dend <- ReadDendrogram(path_to_newick_file)

答案 1 :(得分:4)

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

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

答案 2 :(得分:2)

我认为问题实际上是你的“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会引发错误。