ggtree can parse many software outputs and the evolution evidences inferred by these software can be used directly for tree annotation. ggtree not only works as an infrastructure that enables evolutionary data that inferred by commonly used software packages to be used in R, but also serves as a general tree visualization and annotation tool for the R community as it supports many S3/S4 objects defined by other R packages.
phyloseq class defined in the phyloseq package was designed for microbiome data.
phyloseq package implemented
plot_tree function using
ggplot2. Although the function was implemented by
ggplot2 and we can use
scale_color_manual etc for customization, the most valuable part of
ggplot2, adding layer, is missing.
plot_tree only provides limited parameters to control the output graph and it is hard to add layer unless user has expertise in both
We are happy to announce that
ggtree supports interactive tree annotation/manipulation by implementing an
identify method. Users can click on a node to highlight a clade, to label or rotate it etc.
Here is an example of highlighting clades using
I extended the subview function to support embed image file in a
set.seed(123) d = data.frame(x=rnorm(10), y=rnorm(10)) imgfile <- tempfile(, fileext=".png") download.file("https://avatars1.githubusercontent.com/u/626539?v=3&u=e731426406dd3f45a73d96dd604bc45ae2e7c36f&s=140", destfile=imgfile, mode='wb') p = ggplot(d, aes(x, y)) subview(p, imgfile, x=d$x, y=d$y) + geom_point(size=5)
Phylip is also a widely used tree format, which contains taxa sequences with Newick tree text.
ggtree, we can use
read.phylip() function to parse the file and use
ggtree() to visualize the tree.
This is a question from
ggtree user. In
phytools, it’s easy to label edge using the
set.seed(1) tr = rtree(30) library(ape) plot(tr, main="ape") edgelabels()
ggtree implemented a function,
subview, that can add subplots on a
ggplot2 object. It had successful applied to plot pie graphs on map.
set.seed(2016-01-04) tr <- rtree(30) tr <- groupClade(tr, node=45) p <- ggtree(tr, aes(color=group)) + geom_tippoint() cpos <- get_clade_position(p, node=45) p1 <- p + geom_hilight(node=45) p2 <- with(cpos, p+xlim(xmin, xmax*1.01)+ylim(ymin, ymax)) with(cpos, subview(p2+geom_tiplab(), p1+theme_transparent(), x=xmin+(xmax-xmin)*.15, y=ymin+(ymax-ymin)*.85))
A new version of ggtree that works with ggplot2 (version >= 2.0.0) is now availabel.
Some functions, add_legend, hilight, annotation_clade and annotation_clade2 were removed. Instead we provide layer functions,
geom_cladelabel. You can use
+ operator to add layers using these layer functions.
In addtion, we provide
geom_segment2 which works exactly as
geom_segment except they allow ggtree users to do subsetting.