如何使用在别处创建的预聚簇数据在R中创建树形图?

时间:2011-05-10 23:26:45

标签: r dendrogram

我有用Java编写的集群代码,我可以从中创建一个嵌套的树结构,例如下面显示了树的一小部分,其中两个是退休的"对象在第一次迭代中进行聚类,并且该组使用" setIsRequired"进行聚类。在第五次迭代中。簇中对象之间的距离显示在括号中。

  |+5 (dist. = 0.0438171125324851)
    |+1 (dist. = 2.220446049250313E-16)
      |-isRetired
      |-isRetired
    |-setIsRetired

我更希望以更传统的树形图样式呈现我的结果,看起来R有一些不错的功能,但因为我对R知之甚少,所以我不清楚如何利用它们。

我是否有可能从Java中将文件树结构写入文件,然后使用几行R代码生成树形图?在R程序中,我想做类似的事情:

  1. 从文件读入数据结构(" hclust"对象?)
  2. 将数据结构转换为树形图(使用" as-dendrogram"?)
  3. 使用" plot"
  4. 显示树形图

    我想这个问题归结为R是否提供了一种从文件中读取并将该字符串输入转换为(hclust)对象的简单方法。如果是这样,输入文件中的数据应该是什么样的?

2 个答案:

答案 0 :(得分:3)

我认为你要找的是phylog。您可以使用Newick表示法在一个文件中打印您的树,解析出来并构建一个您可以轻松查看的phylog对象。网页的结尾给出了如何执行此操作的示例。您也可以考虑phylobase。虽然您不需要这些包提供的全部功能,但您可以依靠它们用于表示树的构造及其绘图功能。

编辑:在here提供更简单的解决方案之前,有人向您询问了类似的问题。所以基本上你在这里编写代码的唯一事情就是你的Newick解析器或者你想从Java输出的任何其他表示的解析器。

答案 1 :(得分:0)

ape(系统发育和进化分析)包中包含树状图绘制功能,并且能够在Newick format中读取树。因为它是一个可选包,所以您需要install它。理论上它易于使用,例如以下命令生成树形图:

> library("ape")
> gcPhylo <- read.tree(file = "gc.tree")
> plot(gcPhylo, show.node.label = TRUE)

Dendrogram produced using APE

到目前为止,我的主要抱怨是,当包含Newick格式的树信息的文件语法出现问题时,几乎没有诊断信息。我已经成功地使用其他工具读取这些相同的文件(在某些情况下,可能是因为这些工具对句法中的某些错误感到宽容)。

您还可以使用phylog包生成树形图,如下所示。

> library(ade4)
> newickString <- system("cat gc.tree", intern = TRUE)
> gcPhylog <- newick2phylog(newickString)
> plot(gcPhylog, clabel.nodes=1)

Dendrogram produced using Phylog

两者都可以使用Newick格式的树,并且都有许多绘图选项。