## ----style, echo=FALSE, results="asis", message=FALSE-------------------- BiocStyle::markdown() knitr::opts_chunk$set(tidy = FALSE, message = FALSE) ## ----echo=FALSE, results="hide", message=FALSE--------------------------- library("colorspace") library("Biostrings") library("ape") library("ggplot2") library("gridExtra") library("ggtree") ## ----fig.width=3, fig.height=3, fig.align="center"----------------------- nwk <- system.file("extdata", "sample.nwk", package="ggtree") x <- readLines(nwk) cat(substring(x, 1, 56), "\n", substring(x, 57), "\n") library("ggplot2") library("ggtree") tree <- read.tree(nwk) ggplot(tree, aes(x, y)) + geom_tree() + theme_tree() + xlab("") + ylab("") ## ----fig.width=3, fig.height=3, fig.align="center"----------------------- ggtree(tree, color="steelblue", size=0.5, 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") ## ----fig.width=6, fig.height=9, fig.align="center"----------------------- library("gridExtra") grid.arrange(ggtree(tree) + ggtitle("(Phylogram) rectangular layout"), ggtree(tree, branch.length='none') + ggtitle("(Cladogram) rectangular layout"), ggtree(tree, layout="slanted") + ggtitle("(Phylogram) slanted layout"), ggtree(tree, layout="slanted", branch.length='none') + ggtitle("(Cladogram) slanted layout"), ggtree(tree, layout="circular") + ggtitle("(Phylogram) circular layout"), ggtree(tree, layout="circular", branch.length="none") + ggtitle("(Cladogram) circular layout"), ggtree(tree, layout="unrooted") + ggtitle("unrooted layout"), ncol=2) ## ----fig.width=9, fig.height=4, fig.align="center"----------------------- tree2d <- read.beast(system.file("extdata", "twoD.tree", package="ggtree")) 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(panel.grid.major=element_line(color="grey20", linetype="dotted", size=.3), panel.grid.major.y=element_blank()) + scale_y_continuous(labels=paste0("N", 2:7)) ## ----fig.width=3, fig.height=3, fig.align="center"----------------------- ggtree(tree) %>% add_legend() ## ----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_text(aes(label=label), size=3, color="purple", hjust=-0.3) ## ----fig.width=6, fig.height=6, warning=FALSE, fig.align="center"-------- ggtree(tree, layout="circular") + geom_text(aes(label=label, angle=angle), size=3, color="purple", vjust=-0.3) ## ----fig.width=5, fig.height=3, warning=FALSE, fig.align="center"-------- p + geom_text(aes(x=branch, label=label), size=3, color="purple", vjust=-0.3) ## ----fig.width=6, fig.height=3, fig.align="center"----------------------- grid.arrange( ggtree(rtree(30), color="red") + theme_tree("steelblue"), ggtree(rtree(20), color="white") + theme_tree("black"), ncol=2) ## ----fig.width=3, fig.height=3, fig.align="center"----------------------- p %<% rtree(50) ## ----fig.width=18, fig.height=10, fig.align="center"--------------------- library("ape") data(chiroptera) library("ggtree") gzoom(chiroptera, grep("Plecotus", chiroptera$tip.label)) ## ----fig.width=5, fig.height=5------------------------------------------- ggtree(tree, aes(color=branch.length)) + scale_color_continuous(low="green", high="red") + theme(legend.position="bottom") ## ----fig.width=5, fig.height=5, fig.align="center", warning=FALSE-------- ggtree(tree) + geom_text(aes(label=node)) ## ----fig.width=5, fig.height=5------------------------------------------- p <- ggtree(tree) + geom_tiplab() annotation_clade(p, node=17, "selected clade", offset.text=2) ## ----fig.width=5, fig.height=5------------------------------------------- annotation_clade2(p, "B", "E", "Clade X", offset.text=2) %>% annotation_clade2("G", "H", "Clade Y", bar.size=4, font.size=8, offset=5, offset.text=4, color="steelblue") ## ----fig.width=5, fig.height=5, fig.align="center", warning=FALSE-------- ggtree(tree) %>% hilight(node=21, fill="steelblue", alpha=.6) %>% hilight(node=17, fill="darkgreen", alpha=.6) ## ----fig.width=5, fig.height=5, fig.align="center", warning=FALSE-------- ggtree(tree, layout="fan") %>% hilight(node=21, fill="steelblue", alpha=.6) %>% hilight(node=23, fill="darkgreen", alpha=.6) ## ----fig.width=5, fig.height=5, fig.align="center", warning=FALSE-------- cp <- ggtree(tree) %>% collapse(node=21) cp + geom_point(subset=.(node == 21), size=5, shape=23, fill="steelblue") ## ----fig.width=5, fig.height=5, fig.align="center", warning=FALSE-------- cp %>% expand(node=21) ## ----fig.width=20, fig.height=7, warning=FALSE--------------------------- set.seed(2015-06-30) p1 <- ggtree(rtree(30)) + geom_text(aes(label=node)) p2 <- flip(p1, node1=45, node2=33) p3 <- flip(p2, 32, 58) grid.arrange(p1, p2, p3, ncol=3) ## ----fig.width=16, fig.height=8, warning=FALSE--------------------------- set.seed(2015-07-01) p1 <- ggtree(rtree(30)) + geom_text(aes(label=node)) p1 <- hilight(p1, 33) p2 <- rotate(p1, 33) grid.arrange(p1, p2, ncol=2) ## ------------------------------------------------------------------------ tree <- groupOTU(tree, focus=c("A", "B", "C", "D", "E")) ## ----fig.width=5, fig.height=5, fig.align="center", warning=FALSE-------- ggtree(tree, aes(color=group)) + geom_tiplab() ## ----fig.width=5, fig.height=5, fig.align="center", warning=FALSE-------- cls <- list(c1=c("A", "B", "C", "D", "E"), c2=c("F", "G", "H"), c3=c("L", "K", "I", "J"), c4="M") tree <- groupOTU(tree, cls) library("colorspace") ggtree(tree, aes(color=group, linetype=group)) + geom_text(aes(label=label), hjust=-.25) + scale_color_manual(values=c("black", rainbow_hcl(4))) + theme(legend.position="right") ## ----fig.width=5, fig.height=5, fig.align="center", warning=FALSE-------- p <- ggtree(tree) groupOTU(p, LETTERS[1:5]) + aes(color=group) + geom_tiplab() + scale_color_manual(values=c("black", "firebrick")) ## ----fig.width=20, fig.height=20, fig.align="center", warning=FALSE------ data(iris) rn <- paste0(iris[,5], "_", 1:150) rownames(iris) <- rn d_iris <- dist(iris[,-5], method="man") tree_iris <- bionj(d_iris) tree_iris <- groupOTU(tree_iris, list(setosa = rn[1:50], versicolor = rn[51:100], virginica_145 = rn[101:150])) cols <- rainbow_hcl(4) ggtree(tree_iris, aes(color=group)) + geom_text(aes(label=label), hjust=-.1) + scale_color_manual(values=cols, breaks=1:3, labels=c("Setosa", "Versicolor", "Virginica")) + theme(legend.position="right") ## ----fig.width=5, fig.height=5, fig.align="center", warning=FALSE-------- tree <- groupClade(tree, node=21) ggtree(tree, aes(color=group, linetype=group)) ## ----fig.width=5, fig.height=5, fig.align="center", warning=FALSE-------- tree <- groupClade(tree, node=c(21, 17)) ggtree(tree, aes(color=group, linetype=group)) ## ----fig.width=5, fig.height=5, fig.align="center", warning=FALSE-------- ggtree(tree, aes(color=group, linetype=group)) + geom_text(aes(label=label), subset=.(group==2), hjust = -.5) + geom_text(aes(label=label), subset=.(group==1), hjust = -.5, color="blue") ## ----fig.width=12, fig.height=6, warning=F------------------------------- grid.arrange(ggtree(tree) %>% hilight(21, "steelblue"), ggtree(tree) %>% scaleClade(21, scale=0.3) %>% hilight(21, "steelblue"), ncol=2) ## ----fig.width=12, fig.height=6, warning=F------------------------------- grid.arrange(ggtree(tree) %>% hilight(17, fill="steelblue") %>% hilight(21, fill="darkgreen"), ggtree(tree) %>% scaleClade(17, scale=2) %>% scaleClade(21, scale=0.3) %>% hilight(17, "steelblue") %>% hilight(21, fill="darkgreen"), ncol=2) ## ----fig.width=5, fig.height=5, fig.align="center", warning=FALSE, eval=FALSE---- ## pp <- ggtree(tree) %>% phylopic("79ad5f09-cf21-4c89-8e7d-0c82a00ce728", color="steelblue", alpha = .3) ## print(pp) ## ----fig.width=5, fig.height=5, fig.align="center", warning=FALSE, eval=FALSE---- ## pp %>% phylopic("67382184-5135-4faa-8e98-eadff02c3e8a", color="#86B875", alpha=.8, node=4) %>% ## phylopic("d3563b54-780f-4711-a49a-7ea051e9dacc", color="darkcyan", alpha=.8, node=17, width=.2) ## ------------------------------------------------------------------------ file <- system.file("extdata/BEAST", "beast_mcc.tree", package="ggtree") beast <- read.beast(file) beast ## ----fig.width=8, width=60, warning=FALSE, fig.align="center"------------ plot(beast, annotation="length_0.95_HPD", branch.length="none") + theme_tree() ## ----fig.width=8, width=60, warning=FALSE, fig.align="center"------------ plot(beast, annotation="height", ndigits=3, annotation.color="red") ## ------------------------------------------------------------------------ rstfile <- system.file("extdata/PAML_Baseml", "rst", package="ggtree") rst <- read.paml_rst(rstfile) rst ## ----fig.width=10, fig.height=8, width=60, warning=FALSE----------------- p <- plot(rst, annotation="marginal_AA_subs", annotation.color="steelblue") print(p) ## ----fig.width=8, width=60, warning=FALSE, fig.align="center"------------ rstfile <- system.file("extdata/PAML_Codeml", "rst", package="ggtree") rst <- read.paml_rst(rstfile) p %<% rst ## ------------------------------------------------------------------------ mlcfile <- system.file("extdata/PAML_Codeml", "mlc", package="ggtree") mlc <- read.codeml_mlc(mlcfile) mlc ## ----fig.width=8, width=60, warning=FALSE, fig.align="center"------------ plot(mlc, branch.length="branch.length", annotation="dN_vs_dS", annotation.color="blue", ndigits=3) ## ------------------------------------------------------------------------ get.fields(mlc) ## ----fig.width=8, width=60, warning=FALSE, fig.align="center"------------ plot(mlc, branch.length="dN_vs_dS", annotation="dN_vs_dS", ndigits=3) ## ------------------------------------------------------------------------ ml <- read.codeml(rstfile, mlcfile) ml ## ----fig.width=12, fig.height=8, width=60, warning=FALSE, fig.align="center"---- plot(ml, branch.length="rst.branch.length", annotation="dN_vs_dS") plot(ml, branch.length="mlc.branch.length", annotation="marginal_AA_subs") plot(ml, branch.length="dN", annotation="joint_AA_subs", annotation.color="darkgreen") ## ------------------------------------------------------------------------ nwk <- system.file("extdata/HYPHY", "labelledtree.tree", package="ggtree") ancseq <- system.file("extdata/HYPHY", "ancseq.nex", package="ggtree") tipfas <- system.file("extdata", "pa.fas", package="ggtree") hy <- read.hyphy(nwk, ancseq, tipfas) hy ## ----fig.width=12, fig.height=10, width=60, warning=FALSE, fig.align="center"---- plot(hy, annotation="AA_subs") ## ----fig.width=12, fig.height=10, width=60, warning=FALSE, fig.align="center"---- raxml_file <- system.file("extdata/RAxML", "RAxML_bipartitionsBranchLabels.H3", package="ggtree") raxml <- read.raxml(raxml_file) plot(raxml) ## ----fig.width=4, fig.height=6, width=60, warning=FALSE, fig.align="center"---- r8s <- read.r8s(system.file("extdata/r8s", "H3_r8s_output.log", package="ggtree")) ggtree(r8s, branch.length="TREE", mrsd="2014-01-01") + theme_tree2() ## ----fig.width=16, fig.height=10, width=60, warning=FALSE, fig.align="center"---- ggtree(get.tree(r8s)) + facet_wrap(~.id, scales="free_x") + theme_tree2() ## ------------------------------------------------------------------------ jpf <- system.file("extdata/sample.jplace", package="ggtree") jp <- read.jplace(jpf) print(jp) ## ------------------------------------------------------------------------ ## get only best hit get.placements(jp, by="best") ## get all placement get.placements(jp, by="all") ## ------------------------------------------------------------------------ beast_file <- system.file("examples/MCC_FluA_H3.tree", package="ggtree") beast_tree <- read.beast(beast_file) rst_file <- system.file("examples/rst", package="ggtree") mlc_file <- system.file("examples/mlc", package="ggtree") codeml_tree <- read.codeml(rst_file, mlc_file) merged_tree <- merge_tree(beast_tree, codeml_tree) merged_tree ## ----fig.width=20, fig.height=26, warning=FALSE-------------------------- ggtree(merged_tree, aes(color=dN), mrsd="2013-01-01", ndigits = 3) + geom_text(aes(label=posterior), vjust=.1, hjust=-.1, size=5) + theme_tree2() + scale_color_continuous(low="green", high="red") + theme(legend.position="right") ## ----fig.width=12, fig.height=10, width=60, warning=FALSE, fig.align="center"---- ggtree(ml, branch.length="dN_vs_dS") + geom_text(aes(x=branch, label=dN), size=3, vjust=-0.5, color="red") + geom_text(aes(x=branch, label=dS), size=3, vjust=1.2, color="darkgreen") ## ------------------------------------------------------------------------ nwk <- system.file("extdata", "sample.nwk", package="ggtree") tree <- read.tree(nwk) p <- ggtree(tree) dd <- data.frame(taxa = LETTERS[1:13], place = c(rep("GZ", 5), rep("HK", 3), rep("CZ", 4), NA), value = round(abs(rnorm(13, mean=70, sd=10)), digits=1)) ## you don't need to order the data ## data was reshuffled just for demonstration dd <- dd[sample(1:13, 13), ] row.names(dd) <- NULL ## ----eval=FALSE---------------------------------------------------------- ## print(dd) ## ----echo=FALSE, results='asis'------------------------------------------ knitr::kable(dd) ## ----fig.width=6, fig.height=5, warning=FALSE, fig.align="center"-------- p <- p %<+% dd + geom_text(aes(color=place, label=label), hjust=-0.5) + geom_tippoint(aes(size=value, shape=place, color=place), alpha=0.25) p+theme(legend.position="right") ## ----fig.width=6, fig.height=5, warning=FALSE, fig.align="center"-------- p <- p + geom_text(aes(color=place, label=place), hjust=1, vjust=-0.4, size=3) print(p) ## ----fig.width=6, fig.height=5, warning=FALSE, fig.align="center"-------- p <- p + geom_text(aes(color=place, label=value), hjust=1, vjust=1.4, size=3) print(p) ## ------------------------------------------------------------------------ tree <- system.file("extdata", "pa.nwk", package="ggtree") data <- read.csv(system.file("extdata", "pa_subs.csv", package="ggtree"), stringsAsFactor=FALSE) print(tree) head(data) ## ------------------------------------------------------------------------ outfile <- tempfile() write.jplace(tree, data, outfile) ## ------------------------------------------------------------------------ jp <- read.jplace(outfile) print(jp) ## ----fig.width=12, fig.height=12, warning=FALSE, fig.align="center"------ ggtree(jp, showDistance=TRUE) + geom_text(aes(x=branch, label=subs), color="purple", vjust=-1, size=3) + geom_text(aes(label=gc), color="steelblue", hjust=-.6, size=3) + geom_text(aes(label=label), hjust=-.5) ## ----fig.width=20, fig.height=16, fig.align="center"--------------------- genotype_file <- system.file("examples/Genotype.txt", package="ggtree") genotype <- read.table(genotype_file, sep="\t", stringsAsFactor=F) p <- ggtree(beast_tree, mrsd="2013-01-01") %>% add_legend(x=2008, y=5) p <- p + geom_tiplab(size=3) gheatmap(p, genotype, offset = 2, width=0.5) ## ----fig.width=20, fig.height=16, fig.align="center"--------------------- p <- ggtree(beast_tree, mrsd="2013-01-01") + geom_tiplab(size=3, align=TRUE) + theme_tree2() pp <- (p + scale_y_continuous(expand=c(0, 0.3))) %>% gheatmap(genotype, offset=4, width=0.5, colnames=FALSE) %>% scale_x_ggtree() pp + theme(legend.position="right") ## ----fig.width=8, fig.height=12, fig.align='center'---------------------- fasta <- system.file("examples/FluA_H3_AA.fas", package="ggtree") msaplot(ggtree(beast_tree), fasta) ## ----echo=FALSE---------------------------------------------------------- sessionInfo()