我试图在系统发育的终端节点旁边绘制一些彩色方块。但是,我不能让正方形接近终端节点。我认为这与分类标签有关 - 尽管它们被关闭了。
我打算在彼此之后绘制正方形的列,这就是为什么我不能使用带有方形字符的tip.labels。
这是我的测试功能:
.squares = function(colour, start_point, n){
colour = colour[length(colour):1]
inc = 200
## Plot either points or rectangles. Dependant on arugment
rect(start_point, 0.5:(n-0.5), start_point+inc,
1.5:(n+0.5), col = colour)
start_point = start_point + inc ## inc is the width of each box.
start_point
}
这是测试代码:
library(ape)
n = 20
tree = rcoal(n, tip.label = letters[1:n])
t = plot(tree, show.tip.label = FALSE, no.margin = TRUE)
abline(v = t$x.lim[2], col = "red", lwd = 5)
.squares(rep("red", 20), start_point = t$x.lim[2], n = n)
给出了:
我无法弄清楚如何缩小正方形和终端节点之间的差距。
任何方向都会受到赞赏。由于我还将绘制多列方块,因此了解如何在不进入边距的情况下添加更多列将会很有帮助。
感谢
答案 0 :(得分:1)
我似乎无法重现你的错误(水平线在提示限制时正确添加)。
但是,您的问题似乎与Liam Revell's excellent blog上的帖子非常相似。请查看this code,that one甚至更好,this final one。
在你的情况下,你可以使用类似的东西:
## phytools package
library(phytools)
## The tree
n = 20
tree = rcoal(n, tip.label = letters[1:n])
## The data
data <- data.frame(rep(1, n), rep(2, n))
colnames(data) <- c("Something", "SomethingElse")
## The plot (using a near 0 font size plot)
object <- plotTree.datamatrix(tree, data, sep=0, srt=70, yexp=1.05, fsize=0.0001)