0

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

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,values,plot=FALSE)
plot(obj,type="fan",fsize=.1,lwd=0.5)

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

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

我想弄清楚如何做的是如何定位提示标签,以使它们更清晰且不被树的轮廓覆盖。我不能简单地使用dplyr mutate函数或类似的方法在每个终端前面添加一个空格,因为分类单元名称的位置并不总是一致的,有时名称的左侧附加到尖端,有时它是右侧. 我尝试不将数据绘制为风扇,但这最终会创建一个具有大量死区的图形,因为我在树中有一些非常深的分裂(基本上将图形绘制为面向右侧的树结果一半的数字是死空间,因为我的分类群在中生代分歧,但只在 KT 边界之后形成)。

4

1 回答 1

2

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

就像是

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

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

编辑:对不起,和的单位widthheight英寸而不是像素。所以宁愿将其设置为 10 或 20。

于 2021-01-08T12:47:04.837 回答