如何调整系统发育树上相对于树尖的提示标签的位置?

问题描述

我正在尝试使用 ape 中的 phytoolsR 包创建一个连续性状图到系统发育树上的图,以用于出版物。我正在尝试生成的示例代码如下:

library("ape")
library("phytools")
orig_tree<-rtree(n=350)
plot(orig_tree)
values<-data.frame("residuals"=runif(350,min=-1,max=1),row.names=orig_tree$tip.label)
values<-setNames(values$residuals,rownames(values))
residualsignalfit<-fastAnc(orig_tree,values,vars=TRUE,CI=TRUE)
obj<-contMap(orig_tree,plot=FALSE)
plot(obj,type="fan",fsize=.1,lwd=0.5)

唯一的区别是分支的末端长度都相同,因为它们都是活的分类群,但这足以说明我遇到的问题。我在这棵树中有大量的分类群,因此我必须使用 fsize= 参数将文本缩小得相当小,以使它们清晰易读。但是,正如您从示例代码中看到的那样,这样做会导致每个物种名称的末尾被系统发育树的轮廓遮住。我尝试删除轮廓,但它使系统发育的热图很难阅读。一直找不到减少轮廓粗细的方法,好像是自动生成的。

我也尝试将 cex 命令添加plot(obj...),但它对生成的树完全没有影响。

我想弄清楚如何做的是如何定位提示标签以使其更清晰,而不是被树的轮廓所掩盖。我不能简单地使用 dplyr mutate 函数或类似的东西在每个终端前添加一个空格,因为分类单元名称的位置并不总是一致的,有时名称的左侧附加到小费和其他时候它是右侧。我曾尝试不以粉丝的身份绘制数据,但这最终会创建一个具有大量死区的图形,因为我在树内有一些非常深的裂痕(基本上将图形绘制为朝右的树结果图中有一半是死区,因为我的分类群在中生代分化,但仅在 KT 边界之后形成。

解决方法

您可以放大树而不是缩小文本。您可以将绘图导出为具有特定宽度和高度的图像。将两者都设置为 20 应该会使所有提示标签清晰易读。

类似的东西

setEPS()
postscript("output.eps",width = 20,height = 20)
plot(obj,type="fan",lwd=0.5)
dev.off()

这会将绘图保存到 output.eps 而不是在默认查看器中显示。所以它不受屏幕大小的限制。您仍然需要摆弄 lwdfsize 的最佳值,但根据我的经验,当您有一个大画布时,这要容易得多。

编辑:抱歉,widthheight 的单位是英寸而不是像素。所以最好将其设置为 10 或 20。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...