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 randomcoloRas 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!