ggtree annotate phylogenetic tree with local images

July 31, 2015

(This article was first published on R on G. Yu, and kindly contributed to R-bloggers)

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:

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.

annotation_image(p, img_info)

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)

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)

To leave a comment for the author, please follow the link and comment on their blog: R on G. Yu. offers daily e-mail updates about R news and tutorials on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...

If you got this far, why not subscribe for updates from the site? Choose your flavor: e-mail, twitter, RSS, or facebook...

Comments are closed.

Search R-bloggers


Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)