Точки рисования в филогенетическом дереве R

Я хотел бы нарисовать только одну точку на первом узле, а затем нарисовать еще одну в первом наконечнике. Пока я мог рисовать точки, но только все сразу, и я не могу найти способ нарисовать их по отдельности. Что у меня есть на данный момент:

library(ape)
t3 = '((a:1,b:1):1,(c:1.5,d:0.5):0.5):1;'
plot(read.tree(text = t3),root.edge=T)
nodelabels(pch=21, col="black", adj=1, bg='blue', cex=2) 

любая помощь приветствуется


person Francisco    schedule 06.07.2017    source источник


Ответы (2)


Это не точный ответ, но он должен помочь. Я понял это, посмотрев на код функции nodelabels.

library(ape)
t3 = '((a:1,b:1):1,(c:1.5,d:0.5):0.5):1;'
plot(read.tree(text = t3),root.edge=T)

lastPP <- get("last_plot.phylo", envir = .PlotPhyloEnv)
node <- (lastPP$Ntip + 1):length(lastPP$xx)
XX <- lastPP$xx[node]
YY <- lastPP$yy[node]
BOTHlabels(text="", node, XX[1], YY[1], adj = c(0.5, 0.5), 
frame = "rect", pch = 21, thermo = NULL, pie = NULL, 
piecol = NULL, col = "blue", bg = "blue", 
horiz = FALSE, width = NULL, height = NULL, cex=2)

Значки XX и YY обозначают узлы. Здесь я использую только первый. То же самое и с советами. Взгляните на код для tiplabels.

person Suren    schedule 06.07.2017

Вы можете определить, для какого узла вы хотите построить график с помощью аргумента узла в функции nodelabels, и то же самое верно для функции tiplabels, но с аргументом tip. Так:

library(ape)
t3 = '((a:1,b:1):1,(c:1.5,d:0.5):0.5):1;'
tree <- read.tree(text = t3)
first_node <- length(tree$tip.label)+1
plot(tree, root.edge=T)
nodelabels(node = first_node, pch=21, col="black", bg='blue', cex=2)
tiplabels(tip = 1, pch=21, col="black", bg='blue', cex=2)
person Torda Varga    schedule 04.09.2020