In ggtree, we provide a function annotation_image for annotating phylogenetic tree with images.
To demonstrate the usage, I created a tree view from a random tree as shown below:
set.seed(2015-08-01) p <- ggtree(rtree(10)) + xlim(0, 5)+ ylim(0, 11)
We need a data.frame that contains information of taxa labels and image paths. Here I created such a data.frame containing image files downloaded from phylopic.
> img_info V1 V2 1 t1 25f165fa-f279-4f7c-9869-c55be251ffb8.512.png 2 t2 5d7ab302-960b-4db7-9dfd-215175a55906.512.png 3 t3 6fbe723c-3a6b-4d06-8680-bb2a52113df4.512.png 4 t4 d83c02ca-76ed-436b-83ae-7f98d7297be9.512.png 5 t5 ee764929-c865-44f6-b5db-b4e7d5693d1a.512.png
Annotating tree with images is simple in ggtree by using annotation_image function.
By default, all the images will align to the right hand side. We can use align=FALSE, to disable it.
annotation_image(p, img_info, align=FALSE)
We can change the type and size of lines, as demonstrated below:
annotation_image(p, img_info, linetype="dashed", linesize=0.2)
The width of the images were controlled by width parameter, and the height will automatically determined by image dimension.
annotation_image(p, img_info, width = .2, linetype="dashed", linesize=0.2)
In the following example, we add tip labels to the tree.
p <- p+geom_tiplab(align=TRUE, linetype="dashed", linesize=.2) print(p)
If we also want to add the image and align them, we don’t want to show the line added by annotation_image function. This can be achieved by setting linetype=NULL. By default the images and tip labels will be overlapped, we can move the images by offset parameter.
p %>% annotation_image(img_info, width=.2, linetype=NULL, offset=.3)