Recently a phytools user contacted me because he was having difficulty reading a tree with bootstrap values as node labels (saved in NEXUS format from the software RAxML) into R.
The ape function
read.nexus reads in a NEXUS tree file, but doesn't handle node annotation.
The phytools function
read.simmap can read in a particular type of annotation created by the
The packages ips and treeio also read in specially formatted tree files, but I've forgotten how to use them, and so I wasn't able to help him get these to work.
I did suddenly remember that I'd written some code many* years ago (not kidding – 8 years, if you can believe it) to try and read a MrBayes annotated tree in NEXUS format from file. I never finished that code, but realized that I could re-purpose it to read in our RAxML tree.
I just added
this to phytools in the form of
readNexus. Let's give it a try using the phytools user's
originally tree, but with tip labels hidden.
##  '0.7.84'
Now let's plot our tree:
That's pretty hard to read. Let's first ladderize the tree and the show our bootstrap values
using pie-charts instead of numbers. To do that, I will also need to convert my node labels
numeric mode, because they are currently stored as characters.
ladderized<-ladderize(tree) plotTree(ladderized,ftype="i",fsize=0.5,lwd=1, direction="upwards") pies<-cbind( as.numeric(ladderized$node.label)/100, 1-as.numeric(ladderized$node.label)/100) nodelabels(pie=pies,piecol=c("black","white"), cex=0.3) legend(5,0.35,c("0% bootstrap","100% bootstrap"), pch=c(21,21),pt.bg=c("white","black"), cex=0.8,bty="n",pt.cex=1.5)
That's OK, right?
Thank you Liam!! This labeling issue was driving me nuts. When I first read in my tree file with read.nexus and tried to plot bootstrap values, R would still plot node labels, but they didn't correspond to any numbers I could find in my nexus file. Any idea where it was pulling those numbers from? It's not too important but I was just puzzled, and curious.ReplyDelete