## Plotter of 2 distance matrices (phylogeny and character) ## By Katie Wagner and Marc Cadotte ## Aug 2008 distPlot <- function (tree,char,dist.method="manhattan",scheme="color",circles="small"){ require(ape) if (is.ultrametric(tree)==F) { tree<-chronogram(tree) } if (class(char)=="data.frame") { names(char)<-c("rname","char") s.ord<-match(tree$tip.label,char$rname) char<-char[s.ord,] rownames(char)<-char$rname charD<-as.matrix(dist(char[2],method=dist.method)) treeD<-as.matrix(as.dist(2*max(tree$edge.length)-2*(vcv.phylo(tree)))) } if (class(char)!="data.frame") { print("Need 2 column dataframe!") char=0 } treeD[lower.tri(treeD)]<-NA charD[lower.tri(charD)]<-NA df<-data.frame() for (i in 1:length(rownames(treeD))){ #phylo matrix centxvec<-treeD[i,] #character matrix centyvec<-charD[i,] for (j in i:length(centxvec)){ x<-centxvec[j] y<-centyvec[j] if (!is.na(x) | !is.na(y)) vec<-c(x,y) df<-data.frame(rbind(df,vec)) } } df<-df[df$X0!=0 & df$X0.1!=0,] vec1bind<-NULL vec2bind<-NULL for (j in 1:length(centxvec)){ vec1<-rep(j,times=length(centxvec)-j) vec1bind<-c(vec1bind,vec1) if (j