我尝试使用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)
我希望从here复制布局的三个示例:
答案 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)
这会产生
答案 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)