使用点将尖端标签链接到系统发育树

时间:2014-08-13 00:36:06

标签: r plot phylogeny

我尝试使用R中的ape包和函数plot.phylo()来生成非超参数树。我很难找到任何关于如何保持尖端标签在其左边缘垂直对齐的文档,以及一系列连接物种的点(可变长度)'命名到节点的顶端。

我们非常感谢任何帮助,以及与R中其他可能实现此目标的软件包的链接。

newick tree

的示例

我没有任何我想要的树例子,但是,描述似乎是不言自明的。标签将全部移动到最右边,并在左侧对齐,然后一系列点(.......)将标签链接到旧位置的位置。

  MLJTT = newickTree (as a string)
  plot.phylo(read.tree(text = MLJTT), show.tip.label = T,use.edge.length = T, no.margin = T, cex = 0.55)

non-aligned phylogeny

我希望从here复制布局的三个示例:enter image description here

2 个答案:

答案 0 :(得分:3)

好的,我最后稍微修改了默认的plot.phylo代码以适应这种变化。这是它的外观

library(ape)
plot.phylo2 <- plot.phylo
environment(plot.phylo2) <- environment(plot.phylo)

body(plot.phylo2)[[c(34, 3, 6, 3, 4, 3)]] <- quote({
    mx <- max(xx[1:Ntip])
    segments(xx[1:Ntip], yy[1:Ntip] + loy, mx, yy[1:Ntip] + loy, 
        lty=2, col="grey")
    text(mx + lox, yy[1:Ntip] + loy, x$tip.label, adj = adj, 
        font = font, srt = srt, cex = cex, col = tip.color)
})

这有些脆弱,可能会在ape的不同版本中发生变化,我已使用版本ape_3.1-4对其进行了测试。您可以通过验证

来检查这是否有效
body(plot.phylo)[[c(34, 3, 6, 3, 4, 3)]]

返回

text(xx[1:Ntip] + lox, yy[1:Ntip] + loy, x$tip.label, adj = adj, 
    font = font, srt = srt, cex = cex, col = tip.color)

只是为了确保我们正在更改正确的行。但是上面的代码基本上取代了绘制标签的那条线,通过移动绘制它们的x轴并添加虚线的线段。然后,您可以使用测试数据

运行它
MLJTT = read.tree(text="..<sample data>..")
plot.phylo2(MLJTT, 
    show.tip.label = T,use.edge.length = T, no.margin = T, cex = 0.55)

这会产生

enter image description here

答案 1 :(得分:1)

我认为你可能正在寻找的是plot.phylo的论据:

align.tip.label = TRUE

你试过这个吗?

MLJTT <- rtree(100)
plot.phylo(MLJTT, show.tip.label = T, align.tip.label = T, use.edge.length = T, no.margin = T, cex = 0.55)