I recently received the following inquiry:
“I am attempting to use phytools and cophyloplot to compare two trees. I would like to color the tip labels and connectors between certain tip labels. For example, in the tree below I might like to have 't1' and 't3' red in both trees and the connectors between them also be red. I have not been able to find an example for this in your blog. Could you tell me how this can be done or direct me to a blog post that explains this.”
In fact, this is pretty straightforward to do in phytools using the plot.cophylo
argument link.col
.
Here's a quick demo.
Load phytools:
library(phytools)
Load some co-phylogenetic data. This comes from Lopez-Vaamonde et al. (2001):
data(wasp.trees)
print(wasp.trees,details=TRUE)
## 2 phylogenetic trees
## tree 1 : 19 tips
## tree 2 : 15 tips
data(wasp.data)
wasp.data
## Pleistodontes Sycoscapter
## 1 P._greenwoodi S._4_{obliqua}
## 2 P._xanthocephalus S._2_{aff._obliqua}
## 3 P._plebejus S._14_{hesperidiiformis}
## 4 P._rieki S._12_{xylosycia}
## 5 P._blandus S._11_{glandifera}
## 6 P._regalis S._8_{pleurocarpa}
## 7 P._nitens S._10_{crassipes}
## 8 P._schizodontes S._9_{triradiata}
## 9 P._imperialis S._15_{rubiginosa}
## 10 P._athysanus S._1_{brachypoda}
## 11 P._astrabocheilus S._7_{subpuberula}
## 12 P._proximus S._6_{lilliputiana}
## 13 P._macrocainus S._5_{cerasicarpa}
## 14 P._cuneatus S._3_{playpoda}
## 15 P._froggatti S._australis_{macrophylla}
Now let's create & plot a standard "cophylo"
object:
wasp.cophylo<-cophylo(wasp.trees[[1]],wasp.trees[[2]],
assoc=wasp.data)
## Rotating nodes to optimize matching...
## Done.
wasp.cophylo
## Object of class "cophylo" containing:
##
## (1) 2 (possibly rotated) phylogenetic trees in an object of class "multiPhylo".
##
## (2) A table of associations between the tips of both trees.
plot(wasp.cophylo)
That's pretty ugly. To get some more interesting colors for our linking lines, we can use the package randomcoloR as follows:
library(randomcoloR)
palette<-distinctColorPalette(nrow(wasp.data))
Let's graph these colors:
pie(rep(1,nrow(wasp.data)),col=palette)
Now, our lines cross (obviously) so a useful feature of our colors could be to make them semi-transparent so that linking lines from one taxon to the other are easier to follow. Let's do that:
palette<-make.transparent(palette,0.5)
Finally, let's create our new "cophylo"
plot:
par(lend=3)
plot(wasp.cophylo,link.col=palette,link.lwd=4,link.type="curved",
link.lty="solid",fsize=c(0.8,0.8))
That's all there is to it!