我想在第一个节点上只绘制一个点,然后在第一个节点中绘制另一个点。到目前为止,我可以绘制点,但只能同时绘制所有点,我找不到单独绘制它的方法。到目前为止我所拥有的:
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)
感谢任何帮助
答案 0 :(得分:1)
这不是确切的答案,但它应该有所帮助。我通过查看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
的代码。
答案 1 :(得分:1)
您可以在nodelabels函数内使用“ node”参数定义要绘制到哪个节点,对于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)