我正在尝试使用 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)
我想从 here 复制布局的三个示例:
最佳答案
好吧,我最终稍微修改了默认的 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)
这会产生
关于r - 使用点将提示标签链接到系统发育树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25276322/