进化树终端节点旁彩色方块间距过大问题求助
解决进化树终端节点旁彩色方块的间隙问题
嗨,我来帮你搞定这个头疼的间隙问题!你说得没错,哪怕关闭了分类单元标签,树绘图时默认的标签预留空间还是会导致方块和终端节点之间出现空隙。下面给你几个针对性的解决方案,亲测有效:
1. 先消除树绘图的默认标签偏移
在调用plot.phylo绘制进化树时,哪怕设置了show.tip.label=FALSE,默认的label.offset参数还是会给标签预留空间。你可以直接把这个参数设为0甚至负数,让终端节点的位置完全贴合原本的坐标:
# 以右向树为例,关闭标签并把label.offset设为0 plot(phy, type="right", show.tip.label=FALSE, label.offset=0)
2. 用tiplabels精准控制方块位置
如果用tiplabels函数绘制彩色方块,直接调整它的offset参数,把偏移量设成极小的值(甚至负数),就能让方块紧紧贴住终端节点:
plot(phy, show.tip.label=FALSE, label.offset=0) # 绘制彩色方块,offset设为0.01(可根据树的比例尺微调) tiplabels(pch=15, col=rainbow(Ntip(phy)), offset=0.01)
要是需要画多列方块,只需要依次调整offset的值就行——比如第一列用0.01,第二列用0.04,第三列用0.07,这样多列方块就能整齐排列,还都贴近节点。
3. 直接提取节点坐标用points自定义绘制
如果想要绝对精准的控制,你可以直接提取终端节点的坐标,然后用points函数在指定位置画方块:
plot(phy, show.tip.label=FALSE) # 从绘图环境中提取终端节点的坐标 tip_x <- get("last_plot.phylo", envir = .PlotPhyloEnv)$xx[1:Ntip(phy)] tip_y <- get("last_plot.phylo", envir = .PlotPhyloEnv)$yy[1:Ntip(phy)] # 在终端节点右侧(右向树)画方块,x坐标微调至贴近节点 points(x = tip_x + 0.02, y = tip_y, pch=15, col=rainbow(Ntip(phy))) # 第二列方块就把x偏移改成+0.05,以此类推 points(x = tip_x + 0.05, y = tip_y, pch=15, col=heat.colors(Ntip(phy)))
这种方法完全不受默认参数的限制,你可以根据树的大小和需求任意调整方块的位置。
小提示
如果你的进化树不是右向的(比如上向、下向),只需要调整坐标的偏移方向就行——比如上向树要调整y坐标,而不是x坐标。
内容的提问来源于stack exchange,提问作者SamPassmore
相关产品推荐
相关产品推荐

