Как я могу настроить положение меток кончиков относительно кончиков деревьев на филогенетическом дереве?

Я пытаюсь создать рисунок карты непрерывного признака на филогенетическом дереве, используя пакеты 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).

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
725
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вместо того, чтобы уменьшать текст, вы можете масштабировать дерево вверх. Вы можете экспортировать график как изображение с определенной шириной и высотой. Установка обоих значений на 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 =, и она ничего не делает

user2352714 09.01.2021 06:49

Другие вопросы по теме