## ----style, echo=FALSE, results="asis", message=FALSE-------------------- knitr::opts_chunk$set(tidy = FALSE, message = FALSE) ## ----echo=FALSE, results="hide", message=FALSE--------------------------- library("ape") library("grid") library("ggplot2") library("cowplot") library("treeio") library("ggtree") CRANpkg <- function (pkg) { cran <- "https://CRAN.R-project.org/package" fmt <- "[%s](%s=%s)" sprintf(fmt, pkg, cran, pkg) } Biocpkg <- function (pkg) { sprintf("[%s](http://bioconductor.org/packages/%s)", pkg, pkg) } ## ------------------------------------------------------------------------ library("treeio") library("ggtree") nwk <- system.file("extdata", "sample.nwk", package="treeio") tree <- read.tree(nwk) ## ----fig.width=3, fig.height=3, fig.align="center"----------------------- ggplot(tree, aes(x, y)) + geom_tree() + theme_tree() ## ----fig.width=3, fig.height=3, fig.align="center"----------------------- ggtree(tree, color="firebrick", size=1, linetype="dotted") ## ----fig.width=3, fig.height=3, fig.align="center"----------------------- ggtree(tree, ladderize=FALSE) ## ----fig.width=3, fig.height=3, fig.align="center"----------------------- ggtree(tree, branch.length="none") ## ----eval=F-------------------------------------------------------------- # library(ggtree) # set.seed(2017-02-16) # tr <- rtree(50) # ggtree(tr) # ggtree(tr, layout="slanted") # ggtree(tr, layout="circular") # ggtree(tr, layout="fan", open.angle=120) # ggtree(tr, layout="equal_angle") # ggtree(tr, layout="daylight") # ggtree(tr, branch.length='none') # ggtree(tr, branch.length='none', layout='circular') # ggtree(tr, layout="daylight", branch.length = 'none') ## ----echo=F, fig.width=8, fig.height=8, message=FALSE------------------- library(ggtree) set.seed(2017-02-16) tr <- rtree(50) library(cowplot) theme_layout <- theme(plot.title = element_text(hjust = 0.5)) plot_grid( ggtree(tr) + ggtitle("rectangular (phylogram)")+ theme_layout, ggtree(tr, layout="slanted") + ggtitle("slanted (phylogram)")+theme_layout, ggtree(tr, layout="circular") + ggtitle("circular (phylogram)")+theme_layout, ggtree(tr, layout="fan", open.angle=120) + ggtitle("fan (phylogram)")+theme_layout, ggtree(tr, layout="equal_angle")+ ggtitle("equal angle (unrooted)")+theme_layout, ggtree(tr, layout="daylight")+ ggtitle("daylight (unrooted)")+theme_layout, ggtree(tr, branch.length='none')+ ggtitle("rectangular (cladogram)")+theme_layout, ggtree(tr, branch.length='none', layout='circular')+ ggtitle("circular (cladogram)")+theme_layout, ggtree(tr, layout="daylight", branch.length = 'none')+ ggtitle("daylight (cladogram)")+theme_layout, ncol=3) ## ----eval=FALSE---------------------------------------------------------- # ggtree(tr) + scale_x_reverse() # ggtree(tr) + coord_flip() # ggtree(tr) + scale_x_reverse() + coord_flip() # print(ggtree(tr), newpage=TRUE, vp = grid::viewport(angle=-30, width=.9, height=.9)) # ggtree(tr, layout='slanted') + coord_flip() # ggtree(tr, layout='slanted', branch.length='none') + # coord_flip() + scale_y_reverse() +scale_x_reverse() # ggtree(tr, layout='circular') + xlim(-10, NA) # ggtree(tr) + scale_x_reverse() + coord_polar(theta='y') # ggtree(tr) + scale_x_reverse(limits=c(10, 0)) + coord_polar(theta='y') ## ----fig.keep='none', echo=FALSE, warning=FALSE-------------------------- tree_angle <- grid::grid.grabExpr(print(ggtree(tr), newpage=TRUE, vp = grid::viewport(angle=-30, width=.9, height=.9))) ## ----fig.width=8, fig.height = 8, echo=FALSE, warning=FALSE-------------- plot_grid( ggtree(tr) + scale_x_reverse(), ggtree(tr) + coord_flip(), ggtree(tr) + scale_x_reverse() + coord_flip(), tree_angle, ggtree(tr, layout='slanted') + coord_flip(), ggtree(tr, layout='slanted', branch.length='none') + coord_flip() + scale_y_reverse() +scale_x_reverse(), ggtree(tr, layout='circular') + xlim(-10, NA), ggtree(tr) + scale_x_reverse() + coord_polar(theta='y'), ggtree(tr) + scale_x_reverse(limits=c(15, 0)) + coord_polar(theta='y'), ncol = 3, labels = LETTERS[1:9]) ## ----fig.width=8, fig.height=4, fig.align="center"----------------------- tree2d <- read.beast(system.file("extdata", "twoD.tree", package="treeio")) ggtree(tree2d, mrsd = "2014-05-01") + theme_tree2() ## ----fig.width=9, fig.height=4, fig.align="center"----------------------- ggtree(tree2d, mrsd = "2014-05-01", yscale="NGS", yscale_mapping=c(N2=2, N3=3, N4=4, N5=5, N6=6, N7=7)) + theme_classic() + theme(axis.line.x=element_line(), axis.line.y=element_line()) + theme(panel.grid.major.x=element_line(color="grey20", linetype="dotted", size=.3), panel.grid.major.y=element_blank()) + scale_y_continuous(labels=paste0("N", 2:7)) ## ----fig.width=4, fig.height=4, fig.align="center"----------------------- ggtree(tree) + geom_treescale() ## ----eval=F-------------------------------------------------------------- # ggtree(tree) + geom_treescale(x=0, y=12, width=6, color='red') # ggtree(tree) + geom_treescale(fontsize=8, linesize=2, offset=-1) ## ----fig.width=8, fig.height=4, fig.align="center", echo=F--------------- plot_grid( ggtree(tree)+geom_treescale(x=0, y=12, width=6, color='red'), ggtree(tree)+geom_treescale(fontsize=8, linesize=2, offset=-1), ncol = 2, labels = LETTERS[1:2]) ## ----fig.width=3, fig.height=3, fig.align="center"----------------------- ggtree(tree) + theme_tree2() ## ----fig.width=3, fig.height=3, fig.align="center"----------------------- ggtree(tree)+geom_point(aes(shape=isTip, color=isTip), size=3) ## ----fig.width=3, fig.height=3, fig.align="center"----------------------- p <- ggtree(tree) + geom_nodepoint(color="#b5e521", alpha=1/4, size=10) p + geom_tippoint(color="#FDAC4F", shape=8, size=3) ## ----fig.width=3, fig.height=3, warning=FALSE, fig.align="center"-------- p + geom_tiplab(size=3, color="purple") ## ----fig.width=6, fig.height=6, warning=FALSE, fig.align="center"-------- ggtree(tree, layout="circular") + geom_tiplab(aes(angle=angle), color='blue') ## ----fig.width=6, fig.height=6, warning=FALSE, fig.align="center"-------- ggtree(tree, layout="circular") + geom_tiplab2(color='blue') ## ----fig.width=4, fig.height=3, warning=FALSE, fig.align="center"-------- p + geom_tiplab(aes(x=branch), size=3, color="purple", vjust=-0.3) ## ----fig.width=3, fig.height=3, fig.align="center"----------------------- p %<% rtree(50) ## ----eval=F-------------------------------------------------------------- # ggtree(rtree(30), color="red") + theme_tree("steelblue") # ggtree(rtree(20), color="white") + theme_tree("black") ## ----fig.width=8, fig.height=3, fig.align="center", echo=F--------------- cowplot::plot_grid( ggtree(rtree(30), color="red") + theme_tree("steelblue"), ggtree(rtree(20), color="purple") + theme_tree("black"), ncol=2) ## ----fig.width=12, fig.height=4------------------------------------------ trees <- lapply(c(10, 20, 40), rtree) class(trees) <- "multiPhylo" ggtree(trees) + facet_wrap(~.id, scale="free") + geom_tiplab() ## ----fig.width=20, fig.height=20----------------------------------------- btrees <- read.tree(system.file("extdata/RAxML", "RAxML_bootstrap.H3", package="treeio")) ggtree(btrees) + facet_wrap(~.id, ncol=10) ## ------------------------------------------------------------------------ p <- ggtree(btrees, layout="rectangular", color="lightblue", alpha=.3) best_tree <- read.tree(system.file("extdata/RAxML", "RAxML_bipartitionsBranchLabels.H3", package="treeio")) df <- fortify(best_tree, branch.length = 'none') p+geom_tree(data=df, color='firebrick') ## ----fig.width=10, fig.height=5------------------------------------------ library("treeio") beast_file <- system.file("examples/MCC_FluA_H3.tree", package="ggtree") beast_tree <- read.beast(beast_file) beast_tree p1 <- ggtree(beast_tree, mrsd='2013-01-01') + theme_tree2() + ggtitle("Divergence time") p2 <- ggtree(beast_tree, branch.length = 'rate') + theme_tree2() + ggtitle("Substitution rate") library(cowplot) plot_grid(p1, p2, ncol=2) ## ----fig.width=10, fig.height=5------------------------------------------ mlcfile <- system.file("extdata/PAML_Codeml", "mlc", package="treeio") mlc_tree <- read.codeml_mlc(mlcfile) p1 <- ggtree(mlc_tree) + theme_tree2() + ggtitle("nucleotide substitutions per codon") p2 <- ggtree(mlc_tree, branch.length='dN_vs_dS') + theme_tree2() + ggtitle("dN/dS tree") plot_grid(p1, p2, ncol=2) ## ------------------------------------------------------------------------ beast_tree2 <- rescale_tree(beast_tree, branch.length = 'rate') ggtree(beast_tree2) + theme_tree2() ## ----fig.width=9, fig.height=5, fig.align="center"----------------------- library("ape") data(chiroptera) library("ggtree") gzoom(chiroptera, grep("Plecotus", chiroptera$tip.label)) ## ----fig.width=9, fig.height=5, message=FALSE, warning=FALSE------------- groupInfo <- split(chiroptera$tip.label, gsub("_\\w+", "", chiroptera$tip.label)) chiroptera <- groupOTU(chiroptera, groupInfo) p <- ggtree(chiroptera, aes(color=group)) + geom_tiplab() + xlim(NA, 23) gzoom(p, grep("Plecotus", chiroptera$tip.label), xmax_adjust=2) ## ----fig.width=5, fig.height=5------------------------------------------- ggtree(beast_tree, aes(color=rate)) + scale_color_continuous(low='darkgreen', high='red') + theme(legend.position="right")