Я пытаюсь создать рисунок карты непрерывного признака на филогенетическом дереве, используя пакеты 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...), но это никак не повлияло на созданное дерево.
Что я пытаюсь выяснить, как это сделать, так это расположить метки кончиков, чтобы сделать их более разборчивыми и не закрывать контуром дерева. Я не могу просто добавить пробел перед каждым терминалом, используя функцию dplyrmutate или что-то в этом роде, потому что позиция названия таксона не всегда постоянна, иногда левая часть названия прикрепляется к кончику, а иногда это правая сторона. Я пытался не отображать данные в виде веера, но в итоге это привело к созданию фигуры с огромным количеством мертвого пространства из-за того, что у меня есть несколько очень глубоких расколов внутри дерева (в основном рисуя фигуру в виде дерева, обращенного вправо на половине рисунка это мертвое пространство, потому что мои таксоны разошлись в мезозое, но видоизменились только после границы K-T).





Вместо того, чтобы уменьшать текст, вы можете масштабировать дерево вверх. Вы можете экспортировать график как изображение с определенной шириной и высотой. Установка обоих значений на 20 должна сделать все надписи на наконечниках разборчивыми.
Что-то вроде
setEPS()
postscript("output.eps", width = 20, height = 20)
plot(obj,type = "fan",lwd=0.5)
dev.off()
Это сохраняет график в output.eps вместо того, чтобы показывать его в средстве просмотра по умолчанию. Так что это не ограничивается размером экрана. Вам все еще нужно возиться с лучшими значениями lwd и fsize, но по моему опыту это намного проще, когда у вас большой холст.
Редактировать: извините, единицы width и height - это дюймы, а не пиксели. Так что скорее установите его на 10 или 20.
Я пробовал использовать команду
cex =, и она ничего не делает