2

我正在尝试使用 R 中的 ape 包和函数 plot.phylo() 生成非超测量树。我正在努力寻找有关如何保持尖端标签在其左边缘垂直对齐以及一系列点(可变长度)将物种名称连接到节点尖端的任何文档。

任何帮助以及指向 R 中可能能够实现此目的的其他包的链接都将不胜感激。

纽维克树的一个例​​子

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

  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)

非对齐系统发育

我想从这里复制布局的三个示例:在此处输入图像描述

4

2 回答 2

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,我已经用 version 进行了测试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)

这会产生

在此处输入图像描述

于 2014-08-13T16:04:40.423 回答
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)
于 2017-02-09T18:02:35.153 回答