In a
prior
post I showed how to add a time axis to a plotted fan tree using the
plotTree / plot.simmap argument part.
Though this works well, our open angle is between part ×
360o and 360o, rather than centered around 0o /
3600. To do this, we should ignore the argument part &
instead combine the poorly documented arguments tips and maxY.
These arguments exist to allow the user to supply a custom tip height spacing/order for
a square phylogram; however, we used in a fan-style tree the effect is to transform
these values into the circular space.
Here's what I mean:
library(phytools)
library(plotrix)
tree
##
## Phylogenetic tree with 400 tips and 399 internal nodes.
##
## Tip labels:
## t307, t308, t181, t128, t129, t110, ...
##
## Rooted; includes branch lengths.
plotTree(tree,type="fan",tips=seq(5,380,by=375/399),maxY=400,
ftype="off",lwd=1)
T<-max(nodeHeights(tree))
tick.spacing<-10
min.tick<-10
obj<-axis(1,pos=0,at=seq(T,min.tick,by=-tick.spacing),cex.axis=0.5,
labels=FALSE)
for(i in 1:length(obj)){
a1<-0
a2<-2*pi
draw.arc(0,0,radius=obj[i],a1,a2,lwd=1,
col=make.transparent("blue",0.1))
}
axis(1,pos=0,at=seq(T,min.tick,by=-tick.spacing),cex.axis=0.5,
labels=FALSE)
text(obj,rep(-5,length(obj)),T-obj,cex=0.6)
text(mean(obj),-10,"time (mybp)",cex=0.8)
Neat.
Note that in theory we could do this with the ape function
axisPhylo, although this function seems to be somewhat unpredictable as
to whether or not it works as expected. For instance:
plotTree(tree,type="fan",tips=seq(15,385,by=370/399),maxY=400,
ftype="off",lwd=1)
axisPhylo()
No comments:
Post a Comment
Note: due to the very large amount of spam, all comments are now automatically submitted for moderation.