Here's something new. Luke Mahler asked me if I could create a plotting method that could take a backbone phylogeny and plot subtrees using triangles that are scaled proportionally to the number of species in the subtree. I'm still working on this, but I posted some preliminary code here.
The function takes a modified tree as an object of class "backbonePhylo". I'm going to make some functions to convert from "phylo" objects, but for now this has to be built manually. The "backbonePhylo" object is like a "phylo" object, but with tip.clade substituted for tip.label. tip.clade is a list in which each subtree is represented by a label, a number of descendant taxa, and crown group depth.
Here's a quick demo of what can be done so far:
> library(geiger) # to help us build our tree
> source("backbonePhylo.R")
> ## now let's create our backbone tree with
> ## random subtree diversities
> tree<-transform(pbtree(n=10),model="lambda",lambda=0.5)
> tree$tip.clade<-list()
> for(i in 1:10){
tree$tip.clade[[i]]<-
list(label=paste("Group",i),
N=ceiling(runif(n=1,min=0,max=20)),
depth=tree$edge.length[which(tree$edge[,2]==i)])
}
> class(tree)<-"backbonePhylo"
> tree
Backbone phylogenetic tree with 10 subtrees and 9 resolved internal nodes.
Labels: Group 1, Group 2, Group 3, Group 4, Group 5, ...
Diversities: 2, 18, 13, 7, 9, ...
> ## ok, let's plot it
> plot(tree)
Cool. That's more or less what we were going for.
Hi Liam!
ReplyDeleteFirst of all I wanted to thank you for your incredible job here!
I wanted to ask if there is any way of using this triangle clade collapsing approach when plotting a "fan" phylogeny. All I have seen is using the "phylogram" structure.
Please forgive me if you have already published that and I have not been able to find it!
Thank you very much in advance!