Merge branch 'master' of https://github.com/JustGitting/ggtree
# Conflicts:
# R/geom_cladelabel.R
# R/tidytree.R
... | ... |
@@ -2,7 +2,7 @@ Package: ggtree |
2 | 2 |
Type: Package |
3 | 3 |
Title: an R package for visualization and annotation of phylogenetic trees with |
4 | 4 |
their covariates and other associated data |
5 |
-Version: 1.7.11 |
|
5 |
+Version: 1.9.1 |
|
6 | 6 |
Authors@R: c( |
7 | 7 |
person("Guangchuang", "Yu", email = "guangchuangyu@gmail.com", role = c("aut", "cre", "cph")), |
8 | 8 |
person("Tommy Tsan-Yuk", "Lam", email = "tylam.tommy@gmail.com", rol = c("aut", "ths")), |
... | ... |
@@ -1,3 +1,12 @@ |
1 |
+CHANGES IN VERSION 1.9.1 |
|
2 |
+------------------------ |
|
3 |
+ o now mapping parameter will passed to segment layer in geom_tiplab(align=T) <2017-06-19, Mon> |
|
4 |
+ o geom_cladelabel support `angle="auto"` for circular layout tree <2017-05-05, Fri> |
|
5 |
+ |
|
6 |
+CHANGES IN VERSION 1.8.0 |
|
7 |
+------------------------ |
|
8 |
+ o BioC 3.5 release <2017-04-26, Wed> |
|
9 |
+ |
|
1 | 10 |
CHANGES IN VERSION 1.7.11 |
2 | 11 |
------------------------ |
3 | 12 |
o remove layout.method parameter <2017-04-20, Thu> |
4 | 13 |
deleted file mode 100644 |
... | ... |
@@ -1,281 +0,0 @@ |
1 |
- |
|
2 |
-## ##' read beast output |
|
3 |
-## ##' |
|
4 |
-## ##' |
|
5 |
-## ##' @title read.beast |
|
6 |
-## ##' @param file beast file |
|
7 |
-## ##' @return \code{beast} object |
|
8 |
-## ##' @importFrom ape read.nexus |
|
9 |
-## ##' @export |
|
10 |
-## ##' @author Guangchuang Yu \url{http://ygc.name} |
|
11 |
-## ##' @examples |
|
12 |
-## ##' file <- system.file("extdata/BEAST", "beast_mcc.tree", package="ggtree") |
|
13 |
-## ##' read.beast(file) |
|
14 |
-## read.beast <- function(file) { |
|
15 |
-## translation <- read.trans_beast(file) |
|
16 |
-## treetext <- read.treetext_beast(file) |
|
17 |
-## stats <- read.stats_beast(file) |
|
18 |
-## phylo <- read.nexus(file) |
|
19 |
- |
|
20 |
-## if (length(treetext) == 1) { |
|
21 |
-## obj <- BEAST(file, treetext, translation, stats, phylo) |
|
22 |
-## } else { |
|
23 |
-## obj <- lapply(seq_along(treetext), function(i) { |
|
24 |
-## BEAST(file, treetext[i], translation, stats[[i]], phylo[[i]]) |
|
25 |
-## }) |
|
26 |
-## class(obj) <- "beastList" |
|
27 |
-## } |
|
28 |
-## return(obj) |
|
29 |
-## } |
|
30 |
- |
|
31 |
- |
|
32 |
-## BEAST <- function(file, treetext, translation, stats, phylo) { |
|
33 |
-## stats$node %<>% gsub("\"*'*", "", .) |
|
34 |
- |
|
35 |
-## fields <- sub("_lower|_upper", "", names(stats)) %>% unique |
|
36 |
-## fields %<>% `[`(.!="node") |
|
37 |
- |
|
38 |
-## phylo <- remove_quote_in_tree_label(phylo) |
|
39 |
- |
|
40 |
-## obj <- new("beast", |
|
41 |
-## fields = fields, |
|
42 |
-## treetext = treetext, |
|
43 |
-## phylo = phylo, |
|
44 |
-## translation = translation, |
|
45 |
-## stats = stats, |
|
46 |
-## file = filename(file) |
|
47 |
-## ) |
|
48 |
-## return(obj) |
|
49 |
-## } |
|
50 |
- |
|
51 |
-## remove_quote_in_tree_label <- function(phylo) { |
|
52 |
-## if (!is.null(phylo$node.label)) { |
|
53 |
-## phylo$node.label %<>% gsub("\"*'*", "", .) |
|
54 |
-## } |
|
55 |
-## if ( !is.null(phylo$tip.label)) { |
|
56 |
-## phylo$tip.label %<>% gsub("\"*'*", "", .) |
|
57 |
-## } |
|
58 |
-## return(phylo) |
|
59 |
-## } |
|
60 |
- |
|
61 |
- |
|
62 |
-## ##' @rdname get.fields-methods |
|
63 |
-## ##' @exportMethod get.fields |
|
64 |
-## setMethod("get.fields", signature(object="beast"), |
|
65 |
-## function(object, ...) { |
|
66 |
-## get.fields.tree(object) |
|
67 |
-## } |
|
68 |
-## ) |
|
69 |
- |
|
70 |
- |
|
71 |
-## read.treetext_beast <- function(file) { |
|
72 |
-## beast <- readLines(file) |
|
73 |
- |
|
74 |
-## ii <- grep("[Bb]egin trees;", beast) |
|
75 |
-## jj <- grep("[Ee]nd;", beast) |
|
76 |
-## jj <- jj[jj > max(ii)][1] |
|
77 |
-## jj <- c(ii[-1], jj) |
|
78 |
- |
|
79 |
-## trees <- sapply(seq_along(ii), function(i) { |
|
80 |
-## tree <- beast[(ii[i]+1):(jj[i]-1)] |
|
81 |
-## tree <- tree[grep("\\s*[Tt]ree", tree)] |
|
82 |
-## ## if (length(tree) > 1) { |
|
83 |
-## ## tree <- paste0(tree, collapse='') |
|
84 |
-## ## } |
|
85 |
-## sub("[^(]*", "", tree) |
|
86 |
-## }) |
|
87 |
- |
|
88 |
-## return(trees) |
|
89 |
-## } |
|
90 |
- |
|
91 |
-## read.trans_beast <- function(file) { |
|
92 |
-## beast <- readLines(file) |
|
93 |
-## i <- grep("TRANSLATE", beast, ignore.case = TRUE) |
|
94 |
-## if (length(i) == 0) { |
|
95 |
-## return(matrix()) |
|
96 |
-## } |
|
97 |
-## end <- grep(";", beast) |
|
98 |
-## j <- end[end %>% `>`(i) %>% which %>% `[`(1)] |
|
99 |
-## trans <- beast[(i+1):j] |
|
100 |
-## trans %<>% gsub("\\t+", "", .) |
|
101 |
-## trans %<>% gsub(",|;", "", .) |
|
102 |
-## trans %<>% `[`(nzchar(trans)) |
|
103 |
-## ## remove quote if strings were quoted |
|
104 |
-## trans %<>% gsub("'|\"", "",.) |
|
105 |
-## trans %<>% sapply(., strsplit, split="\\s+") |
|
106 |
-## trans %<>% do.call(rbind, .) |
|
107 |
-## ## trans is a matrix |
|
108 |
-## return(trans) |
|
109 |
-## } |
|
110 |
- |
|
111 |
- |
|
112 |
-## read.stats_beast <- function(file) { |
|
113 |
-## beast <- readLines(file) |
|
114 |
-## trees <- read.treetext_beast(file) |
|
115 |
-## if (length(trees) == 1) { |
|
116 |
-## return(read.stats_beast_internal(beast, trees)) |
|
117 |
-## } |
|
118 |
-## lapply(trees, read.stats_beast_internal, beast=beast) |
|
119 |
-## } |
|
120 |
- |
|
121 |
-## read.stats_beast_internal <- function(beast, tree) { |
|
122 |
-## tree2 <- gsub("\\[[^\\[]*\\]", "", tree) |
|
123 |
-## phylo <- read.tree(text = tree2) |
|
124 |
- |
|
125 |
-## tree2 <- add_pseudo_nodelabel(phylo, tree2) |
|
126 |
- |
|
127 |
-## ## node name corresponding to stats |
|
128 |
-## nn <- strsplit(tree2, split=",") %>% unlist %>% |
|
129 |
-## strsplit(., split="\\)") %>% unlist %>% |
|
130 |
-## gsub("\\(*", "", .) %>% |
|
131 |
-## gsub("[:;].*", "", .) |
|
132 |
- |
|
133 |
-## phylo <- read.tree(text = tree2) |
|
134 |
-## root <- getRoot(phylo) |
|
135 |
-## nnode <- phylo$Nnode |
|
136 |
- |
|
137 |
-## ## phylo2 <- read.nexus(file) |
|
138 |
-## ## treeinfo <- fortify.phylo(phylo) |
|
139 |
-## ## treeinfo2 <- fortify.phylo(phylo2) |
|
140 |
-## ## treeinfo$label2 <- NA |
|
141 |
-## ## treeinfo$label2[treeinfo$isTip] <- treeinfo2$node[as.numeric(treeinfo$label[treeinfo$isTip])] |
|
142 |
-## ## treeinfo$visited <- FALSE |
|
143 |
-## ## root <- getRoot(phylo2) |
|
144 |
-## ## treeinfo[root, "visited"] <- TRUE |
|
145 |
-## ## currentNode <- 1:Ntip(phylo2) |
|
146 |
-## ## while(any(treeinfo$visited == FALSE)) { |
|
147 |
-## ## pNode <- c() |
|
148 |
-## ## for (kk in currentNode) { |
|
149 |
-## ## i <- which(treeinfo$label2 == kk) |
|
150 |
-## ## treeinfo[i, "visited"] <- TRUE |
|
151 |
-## ## j <- which(treeinfo2$node == kk) |
|
152 |
-## ## ip <- treeinfo$parent[i] |
|
153 |
-## ## if (ip != root) { |
|
154 |
-## ## ii <- which(treeinfo$node == ip) |
|
155 |
-## ## if (treeinfo$visited[ii] == FALSE) { |
|
156 |
-## ## jp <- treeinfo2$parent[j] |
|
157 |
-## ## jj <- which(treeinfo2$node == jp) |
|
158 |
-## ## treeinfo[ii, "label2"] <- treeinfo2[jj, "node"] |
|
159 |
-## ## pNode <- c(pNode, jp) |
|
160 |
-## ## } |
|
161 |
-## ## treeinfo[ii, "visited"] <- TRUE |
|
162 |
-## ## } |
|
163 |
-## ## } |
|
164 |
-## ## currentNode <- unique(pNode) |
|
165 |
-## ## } |
|
166 |
-## ## treeinfo[root, "label2"] <- root |
|
167 |
-## ## ## convert nn to node that encoded in phylo2 |
|
168 |
-## ## node <- treeinfo$label2[match(nn, treeinfo$label)] |
|
169 |
- |
|
170 |
- |
|
171 |
-## #################################################### |
|
172 |
-## ## ## |
|
173 |
-## ## after doing it in the hard way ## |
|
174 |
-## ## I finally figure out the following easy way ## |
|
175 |
-## ## ## |
|
176 |
-## #################################################### |
|
177 |
-## treeinfo <- fortify.phylo(phylo) |
|
178 |
- |
|
179 |
-## if (any(grepl("TRANSLATE", beast, ignore.case = TRUE))) { |
|
180 |
-## label2 <- c(treeinfo[treeinfo$isTip, "label"], |
|
181 |
-## root:(root+nnode-1)) |
|
182 |
-## node <- label2[match(nn, treeinfo$label)] |
|
183 |
-## } else { |
|
184 |
-## node <- as.character(treeinfo$node[match(nn, treeinfo$label)]) |
|
185 |
-## } |
|
186 |
- |
|
187 |
-## ## stats <- unlist(strsplit(tree, "\\["))[-1] |
|
188 |
-## ## stats <- sub(":.+$", "", stats |
|
189 |
-## stats <- strsplit(tree, ":") %>% unlist |
|
190 |
-## names(stats) <- node |
|
191 |
-## stats <- stats[grep("\\[", stats)] |
|
192 |
-## stats <- sub("[^\\[]+\\[", "", stats) |
|
193 |
- |
|
194 |
-## stats <- sub("^&", "", stats) |
|
195 |
-## stats <- sub("];*$", "", stats) |
|
196 |
- |
|
197 |
-## stats2 <- lapply(stats, function(x) { |
|
198 |
-## y <- unlist(strsplit(x, ",")) |
|
199 |
-## sidx <- grep("=\\{", y) |
|
200 |
-## eidx <- grep("\\}$", y) |
|
201 |
- |
|
202 |
-## flag <- FALSE |
|
203 |
-## if (length(sidx) > 0) { |
|
204 |
-## flag <- TRUE |
|
205 |
-## SETS <- sapply(seq_along(sidx), function(k) { |
|
206 |
-## p <- y[sidx[k]:eidx[k]] |
|
207 |
-## gsub(".*=\\{", "", p) %>% gsub("\\}$", "", .) %>% list |
|
208 |
-## }) |
|
209 |
-## names(SETS) <- gsub("=.*", "", y[sidx]) |
|
210 |
- |
|
211 |
-## kk <- sapply(seq_along(sidx), function(k) sidx[k]:eidx[k]) %>% unlist |
|
212 |
-## y <- y[-kk] |
|
213 |
-## } |
|
214 |
- |
|
215 |
- |
|
216 |
-## name <- gsub("=.*", "", y) |
|
217 |
-## val <- gsub(".*=", "", y) %>% gsub("^\\{", "", .) %>% |
|
218 |
-## gsub("\\}$", "", .) |
|
219 |
- |
|
220 |
- |
|
221 |
-## if (flag) { |
|
222 |
-## nn <- c(name, names(SETS)) |
|
223 |
-## } else { |
|
224 |
-## nn <- name |
|
225 |
-## } |
|
226 |
- |
|
227 |
-## res <- character(length(nn)) |
|
228 |
-## names(res) <- nn |
|
229 |
- |
|
230 |
-## for (i in seq_along(name)) { |
|
231 |
-## res[i] <- val[i] |
|
232 |
-## } |
|
233 |
-## if (flag) { |
|
234 |
-## j <- i |
|
235 |
-## for (i in seq_along(SETS)) { |
|
236 |
-## res[i+j] <- SETS[i] |
|
237 |
-## } |
|
238 |
-## } |
|
239 |
- |
|
240 |
-## return(res) |
|
241 |
-## }) |
|
242 |
- |
|
243 |
-## nn <- lapply(stats2, names) %>% unlist %>% |
|
244 |
-## unique %>% sort |
|
245 |
- |
|
246 |
-## ## stats3 is a matrix |
|
247 |
-## stats3 <- t(sapply(stats2, function(x) { |
|
248 |
-## for (ii in nn[!nn %in% names(x)]) { |
|
249 |
-## x[ii] <- NA |
|
250 |
-## } |
|
251 |
-## x[nn] |
|
252 |
-## })) |
|
253 |
- |
|
254 |
-## stats3 <- as.data.frame(stats3) |
|
255 |
-## if (nrow(stats3) == 1) { |
|
256 |
-## ## only has one evidence |
|
257 |
-## ## transpose |
|
258 |
-## stats3 <- data.frame(X=unlist(stats3[1,])) |
|
259 |
-## colnames(stats3) <- nn |
|
260 |
-## } |
|
261 |
-## colnames(stats3) <- gsub("(\\d+)%", "0.\\1", colnames(stats3)) |
|
262 |
- |
|
263 |
-## ## stats3$node <- node |
|
264 |
-## stats3$node <- names(stats) |
|
265 |
-## return(stats3) |
|
266 |
-## } |
|
267 |
- |
|
268 |
-## add_pseudo_nodelabel <- function(phylo, treetext) { |
|
269 |
-## if(is.null(phylo$node.label)) { |
|
270 |
-## nnode <- phylo$Nnode |
|
271 |
-## nlab <- paste("X", 1:nnode, sep="") |
|
272 |
-## for (i in 1:nnode) { |
|
273 |
-## treetext <- sub("\\)([:;])", paste0("\\)", nlab[i], "\\1"), treetext) |
|
274 |
-## } |
|
275 |
-## } |
|
276 |
- |
|
277 |
-## return(treetext) |
|
278 |
-## } |
|
279 |
- |
|
280 |
- |
|
281 |
- |
... | ... |
@@ -69,7 +69,7 @@ geom_cladelabel <- function(node, label, offset=0, offset.text=0, |
69 | 69 |
mapping=mapping, data=data, geom=geom, hjust=hjust, |
70 | 70 |
position=position, show.legend = show.legend, |
71 | 71 |
inherit.aes = inherit.aes, na.rm=na.rm, |
72 |
- parse = parse, ...) |
|
72 |
+ parse = parse, ...) |
|
73 | 73 |
} |
74 | 74 |
|
75 | 75 |
layer_bar <- stat_cladeBar(node=node, offset=offset, align=align, |
... | ... |
@@ -84,7 +84,7 @@ geom_cladelabel <- function(node, label, offset=0, offset.text=0, |
84 | 84 |
align=align, size=fontsize, angle=angle, color=labelcolor, family=family, |
85 | 85 |
mapping=mapping, data=data, geom=geom, hjust=hjust, |
86 | 86 |
position=position, show.legend = show.legend, |
87 |
- inherit.aes = inherit.aes, na.rm=na.rm, parse=parse, ...) |
|
87 |
+ inherit.aes = inherit.aes, na.rm=na.rm, parse=parse, ...) |
|
88 | 88 |
|
89 | 89 |
} else { |
90 | 90 |
layer_text = stat_cladeText(node=node, label=label, offset=offset+offset.text, |
... | ... |
@@ -92,7 +92,7 @@ geom_cladelabel <- function(node, label, offset=0, offset.text=0, |
92 | 92 |
mapping=mapping, data=data, geom=geom, hjust=hjust, |
93 | 93 |
position=position, show.legend = show.legend, |
94 | 94 |
inherit.aes = inherit.aes, na.rm=na.rm, |
95 |
- parse = parse, ...) |
|
95 |
+ parse = parse, ...) |
|
96 | 96 |
} |
97 | 97 |
|
98 | 98 |
layer_bar <- stat_cladeBar(node=node, offset=offset, align=align, |
... | ... |
@@ -112,33 +112,36 @@ geom_cladelabel <- function(node, label, offset=0, offset.text=0, |
112 | 112 |
|
113 | 113 |
stat_cladeText <- function(mapping=NULL, data=NULL, |
114 | 114 |
geom="text", position="identity", |
115 |
- node, label, offset, align, ..., |
|
115 |
+ node, label, offset, align, ..., angle, |
|
116 | 116 |
show.legend=NA, inherit.aes=FALSE, |
117 | 117 |
na.rm=FALSE, parse=FALSE) { |
118 |
- default_aes <- aes_(x=~x, y=~y, node=~node, parent=~parent) |
|
119 |
- if (is.null(mapping)) { |
|
120 |
- mapping <- default_aes |
|
121 |
- } else { |
|
122 |
- mapping <- modifyList(mapping, default_aes) |
|
123 |
- } |
|
124 |
- |
|
125 |
- layer(stat=StatCladeText, |
|
126 |
- data=data, |
|
127 |
- mapping=mapping, |
|
128 |
- geom=geom, |
|
129 |
- position=position, |
|
130 |
- show.legend = show.legend, |
|
131 |
- inherit.aes = inherit.aes, |
|
132 |
- params=list(node=node, |
|
133 |
- label = label, |
|
134 |
- offset = offset, |
|
135 |
- align = align, |
|
136 |
- na.rm = na.rm, |
|
137 |
- parse = parse, |
|
138 |
- ...), |
|
139 |
- check.aes = FALSE |
|
140 |
- ) |
|
141 |
- |
|
118 |
+ |
|
119 |
+ default_aes <- aes_(x=~x, y=~y, node=~node, parent=~parent, angle=~angle) |
|
120 |
+ if (is.null(mapping)) { |
|
121 |
+ mapping <- default_aes |
|
122 |
+ } else { |
|
123 |
+ mapping <- modifyList(mapping, default_aes) |
|
124 |
+ } |
|
125 |
+ |
|
126 |
+ layer(stat=StatCladeText, |
|
127 |
+ data=data, |
|
128 |
+ mapping=mapping, |
|
129 |
+ geom=geom, |
|
130 |
+ position=position, |
|
131 |
+ show.legend = show.legend, |
|
132 |
+ inherit.aes = inherit.aes, |
|
133 |
+ params=list(node=node, |
|
134 |
+ label = label, |
|
135 |
+ offset = offset, |
|
136 |
+ align = align, |
|
137 |
+ na.rm = na.rm, |
|
138 |
+ parse = parse, |
|
139 |
+ angle_ = angle, |
|
140 |
+ ...), |
|
141 |
+ check.aes = FALSE |
|
142 |
+ ) |
|
143 |
+ |
|
144 |
+ |
|
142 | 145 |
} |
143 | 146 |
|
144 | 147 |
stat_cladeBar <- function(mapping=NULL, data=NULL, |
... | ... |
@@ -169,46 +172,62 @@ stat_cladeBar <- function(mapping=NULL, data=NULL, |
169 | 172 |
} |
170 | 173 |
|
171 | 174 |
StatCladeText <- ggproto("StatCladeText", Stat, |
172 |
- compute_group = function(self, data, scales, params, node, label, offset, align) { |
|
173 |
- df <- get_cladelabel_position(data, node, offset, align, adjustRatio = 1.03) |
|
174 |
- df$y <- mean(c(df$y, df$yend)) |
|
175 |
- df$label <- label |
|
176 |
- return(df) |
|
175 |
+ compute_group = function(self, data, scales, params, node, label, offset, align, angle_) { |
|
176 |
+ df <- get_cladelabel_position(data, node, offset, align, adjustRatio = 1.03, angle_) |
|
177 |
+ df$y <- mean(c(df$y, df$yend)) |
|
178 |
+ df$label <- label |
|
179 |
+ return(df) |
|
177 | 180 |
}, |
178 |
- required_aes = c("x", "y", "label") |
|
179 |
-) |
|
180 |
- |
|
181 |
- |
|
181 |
+ required_aes = c("x", "y", "label", "angle") |
|
182 |
+ ) |
|
182 | 183 |
|
183 | 184 |
StatCladeBar <- ggproto("StatCladBar", Stat, |
184 | 185 |
compute_group = function(self, data, scales, params, node, offset, align) { |
185 |
- get_cladelabel_position(data, node, offset, align, adjustRatio=1.02) |
|
186 |
+ get_cladelabel_position(data, node, offset, align, adjustRatio=1.02, angle=0) |
|
186 | 187 |
}, |
187 | 188 |
required_aes = c("x", "y", "xend", "yend") |
188 | 189 |
) |
189 | 190 |
|
190 | 191 |
|
191 |
-get_cladelabel_position <- function(data, node, offset, align, adjustRatio) { |
|
192 |
- df <- get_cladelabel_position_(data, node) |
|
193 |
- if (align) { |
|
194 |
- # Find max x value for all tree nodes so all clade labels align to same position. |
|
195 |
- mx <- max(data$x, na.rm=TRUE) |
|
196 |
- } else { |
|
197 |
- mx <- df$x |
|
198 |
- } |
|
199 |
- mx <- mx * adjustRatio + offset |
|
200 |
- data.frame(x=mx, xend=mx, y=df$y, yend=df$yend) |
|
192 |
+get_cladelabel_position <- function(data, node, offset, align, adjustRatio, angle="auto") { |
|
193 |
+ df <- get_cladelabel_position_(data, node, angle) |
|
194 |
+ if (align) { |
|
195 |
+ # Find max x value for all tree nodes so all clade labels align to same position. |
|
196 |
+ mx <- max(data$x, na.rm=TRUE) |
|
197 |
+ } else { |
|
198 |
+ mx <- df$x |
|
199 |
+ } |
|
200 |
+ |
|
201 |
+ angle <- df$angle |
|
202 |
+ ## if (angle >= 90 & angle <=270) { |
|
203 |
+ ## angle <- angle + 180 |
|
204 |
+ ## } |
|
205 |
+ |
|
206 |
+ mx <- mx * adjustRatio + offset |
|
207 |
+ |
|
208 |
+ data.frame(x=mx, xend=mx, y=df$y, yend=df$yend, angle=angle) |
|
201 | 209 |
} |
202 | 210 |
|
203 |
-# get x, y and yend of clade region. |
|
204 |
-get_cladelabel_position_ <- function(data, node) { |
|
205 |
- sp <- get.offspring.df(data, node) |
|
206 |
- sp2 <- c(sp, node) |
|
207 |
- sp.df <- data[match(sp2, data$node),] |
|
208 |
- |
|
209 |
- y <- sp.df$y |
|
210 |
- y <- y[!is.na(y)] |
|
211 |
- mx <- max(sp.df$x, na.rm=TRUE) |
|
212 |
- data.frame(x=mx, y=min(y), yend=max(y)) |
|
211 |
+ # get x, y and yend of clade region. |
|
212 |
+get_cladelabel_position_ <- function(data, node, angle="auto") { |
|
213 |
+ sp <- get.offspring.df(data, node) |
|
214 |
+ sp2 <- c(sp, node) |
|
215 |
+ sp.df <- data[match(sp2, data$node),] |
|
216 |
+ |
|
217 |
+ y <- sp.df$y |
|
218 |
+ y <- y[!is.na(y)] |
|
219 |
+ mx <- max(sp.df$x, na.rm=TRUE) |
|
220 |
+ |
|
221 |
+ d <- data.frame(x=mx, y=min(y), yend=max(y)) |
|
222 |
+ if (missing(angle)) |
|
223 |
+ return(d) |
|
224 |
+ |
|
225 |
+ if (angle == "auto") { |
|
226 |
+ d$angle <- mean(range(sp.df$angle)) |
|
227 |
+ } else { |
|
228 |
+ d$angle <- angle |
|
229 |
+ } |
|
230 |
+ return(d) |
|
231 |
+ |
|
213 | 232 |
} |
214 | 233 |
|
... | ... |
@@ -18,7 +18,7 @@ |
18 | 18 |
##' require(ape) |
19 | 19 |
##' tr <- rtree(10) |
20 | 20 |
##' ggtree(tr) + geom_tiplab() |
21 |
-geom_tiplab <- function(mapping=NULL, hjust = 0, align = FALSE, linetype = "dotted", linesize=1, geom="text", offset = 0, ...) { |
|
21 |
+geom_tiplab <- function(mapping=NULL, hjust = 0, align = FALSE, linetype = "dotted", linesize=1, geom="text", offset=0, ...) { |
|
22 | 22 |
geom <- match.arg(geom, c("text", "label")) |
23 | 23 |
if (geom == "text") { |
24 | 24 |
text_geom <- geom_text2 |
... | ... |
@@ -43,6 +43,12 @@ geom_tiplab <- function(mapping=NULL, hjust = 0, align = FALSE, linetype = "dot |
43 | 43 |
show_segment <- FALSE |
44 | 44 |
if (align && (!is.na(linetype) && !is.null(linetype))) { |
45 | 45 |
show_segment <- TRUE |
46 |
+ segment_mapping <- aes(x = max(x, na.rm=TRUE), |
|
47 |
+ xend = x + diff(range(x, na.rm=TRUE))/200, |
|
48 |
+ y = y, yend = y, |
|
49 |
+ subset=isTip) |
|
50 |
+ if (!is.null(mapping)) |
|
51 |
+ segment_mapping <- modifyList(segment_mapping, mapping) |
|
46 | 52 |
} |
47 | 53 |
|
48 | 54 |
list( |
... | ... |
@@ -50,10 +56,14 @@ geom_tiplab <- function(mapping=NULL, hjust = 0, align = FALSE, linetype = "dot |
50 | 56 |
hjust = hjust, nudge_x = offset, ...) |
51 | 57 |
, |
52 | 58 |
if (show_segment) |
53 |
- geom_tipsegment(mapping = aes(subset=isTip), |
|
54 |
- offset = offset, |
|
55 |
- linetype = linetype, |
|
56 |
- size = linesize, ...) |
|
59 |
+ geom_segment2(mapping = segment_mapping, |
|
60 |
+ linetype = linetype, |
|
61 |
+ size = linesize, ...) |
|
62 |
+ |
|
63 |
+ ## geom_tipsegment(mapping = segment_mapping, |
|
64 |
+ ## offset = offset, |
|
65 |
+ ## linetype = linetype, |
|
66 |
+ ## size = linesize, ...) |
|
57 | 67 |
) |
58 | 68 |
} |
59 | 69 |
|
... | ... |
@@ -88,47 +98,47 @@ geom_tiplab2 <- function(mapping=NULL, hjust=0, ...) { |
88 | 98 |
) |
89 | 99 |
} |
90 | 100 |
|
91 |
-geom_tipsegment <- function(mapping=NULL, data=NULL, |
|
92 |
- geom=GeomSegmentGGtree, position = "identity", |
|
93 |
- offset, ..., |
|
94 |
- show.legend=NA, inherit.aes=FALSE, |
|
95 |
- na.rm=TRUE) { |
|
96 |
- |
|
97 |
- default_aes <- aes_(x=~x, y=~y) |
|
98 |
- if (is.null(mapping)) { |
|
99 |
- mapping <- default_aes |
|
100 |
- } else { |
|
101 |
- mapping <- modifyList(default_aes, mapping) |
|
102 |
- } |
|
103 |
- |
|
104 |
- layer(stat=StatTipSegment, |
|
105 |
- data = data, |
|
106 |
- mapping = mapping, |
|
107 |
- geom = geom, |
|
108 |
- position = position, |
|
109 |
- show.legend = show.legend, |
|
110 |
- inherit.aes = inherit.aes, |
|
111 |
- params = list(offset = offset, |
|
112 |
- na.rm = na.rm, |
|
113 |
- ...), |
|
114 |
- check.aes = FALSE |
|
115 |
- ) |
|
116 |
-} |
|
117 |
- |
|
118 |
-StatTipSegment <- ggproto("StatTipSegment", Stat, |
|
119 |
- compute_group = function(self, data, scales, params, offset) { |
|
120 |
- get_tipsegment_position(data, offset) |
|
121 |
- }, |
|
122 |
- required_aes = c("x", "y") |
|
123 |
- ) |
|
124 |
- |
|
125 |
- |
|
126 |
-get_tipsegment_position <- function(data, offset, adjustRatio=1/200) { |
|
127 |
- adjust <- diff(range(data$x, na.rm=TRUE)) * adjustRatio |
|
128 |
- xend <- data$x + adjust |
|
129 |
- x <- max(data$x, na.rm = TRUE) + offset |
|
130 |
- y <- data$y |
|
131 |
- data.frame(x=x, xend=xend, y=y, yend=y) |
|
132 |
-} |
|
101 |
+## geom_tipsegment <- function(mapping=NULL, data=NULL, |
|
102 |
+## geom=GeomSegmentGGtree, position = "identity", |
|
103 |
+## offset, ..., |
|
104 |
+## show.legend=NA, inherit.aes=FALSE, |
|
105 |
+## na.rm=TRUE) { |
|
106 |
+ |
|
107 |
+## default_aes <- aes_(x=~x, y=~y) |
|
108 |
+## if (is.null(mapping)) { |
|
109 |
+## mapping <- default_aes |
|
110 |
+## } else { |
|
111 |
+## mapping <- modifyList(default_aes, mapping) |
|
112 |
+## } |
|
113 |
+ |
|
114 |
+## layer(stat=StatTipSegment, |
|
115 |
+## data = data, |
|
116 |
+## mapping = mapping, |
|
117 |
+## geom = geom, |
|
118 |
+## position = position, |
|
119 |
+## show.legend = show.legend, |
|
120 |
+## inherit.aes = inherit.aes, |
|
121 |
+## params = list(offset = offset, |
|
122 |
+## na.rm = na.rm, |
|
123 |
+## ...), |
|
124 |
+## check.aes = FALSE |
|
125 |
+## ) |
|
126 |
+## } |
|
127 |
+ |
|
128 |
+## StatTipSegment <- ggproto("StatTipSegment", Stat, |
|
129 |
+## compute_group = function(self, data, scales, params, offset) { |
|
130 |
+## get_tipsegment_position(data, offset) |
|
131 |
+## }, |
|
132 |
+## required_aes = c("x", "y") |
|
133 |
+## ) |
|
134 |
+ |
|
135 |
+ |
|
136 |
+## get_tipsegment_position <- function(data, offset, adjustRatio=1/200) { |
|
137 |
+## adjust <- diff(range(data$x, na.rm=TRUE)) * adjustRatio |
|
138 |
+## xend <- data$x + adjust |
|
139 |
+## x <- max(data$x, na.rm = TRUE) + offset |
|
140 |
+## y <- data$y |
|
141 |
+## data.frame(x=x, xend=xend, y=y, yend=y) |
|
142 |
+## } |
|
133 | 143 |
|
134 | 144 |
|
... | ... |
@@ -1,6 +1,6 @@ |
1 | 1 |
##' append a heatmap of a matrix to right side of phylogenetic tree |
2 | 2 |
##' |
3 |
-##' |
|
3 |
+##' |
|
4 | 4 |
##' @title gheatmap |
5 | 5 |
##' @param p tree view |
6 | 6 |
##' @param data matrix or data.frame |
... | ... |
@@ -31,23 +31,23 @@ |
31 | 31 |
gheatmap <- function(p, data, offset=0, width=1, low="green", high="red", color="white", |
32 | 32 |
colnames=TRUE, colnames_position="bottom", colnames_angle=0, colnames_level=NULL, |
33 | 33 |
colnames_offset_x = 0, colnames_offset_y = 0, font.size=4, hjust=0.5) { |
34 |
- |
|
34 |
+ |
|
35 | 35 |
colnames_position %<>% match.arg(c("bottom", "top")) |
36 | 36 |
variable <- value <- lab <- y <- NULL |
37 |
- |
|
37 |
+ |
|
38 | 38 |
## if (is.null(width)) { |
39 | 39 |
## width <- (p$data$x %>% range %>% diff)/30 |
40 | 40 |
## } |
41 |
- |
|
41 |
+ |
|
42 | 42 |
## convert width to width of each cell |
43 | 43 |
width <- width * (p$data$x %>% range %>% diff) / ncol(data) |
44 |
- |
|
44 |
+ |
|
45 | 45 |
isTip <- x <- y <- variable <- value <- from <- to <- NULL |
46 |
- |
|
46 |
+ |
|
47 | 47 |
df <- p$data |
48 | 48 |
df <- df[df$isTip,] |
49 | 49 |
start <- max(df$x) + offset |
50 |
- |
|
50 |
+ |
|
51 | 51 |
dd <- as.data.frame(data) |
52 | 52 |
## dd$lab <- rownames(dd) |
53 | 53 |
lab <- df$label[order(df$y)] |
... | ... |
@@ -69,10 +69,10 @@ gheatmap <- function(p, data, offset=0, width=1, low="green", high="red", color= |
69 | 69 |
V2 <- start + as.numeric(dd$variable) * width |
70 | 70 |
mapping <- data.frame(from=dd$variable, to=V2) |
71 | 71 |
mapping <- unique(mapping) |
72 |
- |
|
72 |
+ |
|
73 | 73 |
dd$x <- V2 |
74 | 74 |
dd$width <- width |
75 |
- |
|
75 |
+ |
|
76 | 76 |
if (is.null(color)) { |
77 | 77 |
p2 <- p + geom_tile(data=dd, aes(x, y, fill=value), width=width, inherit.aes=FALSE) |
78 | 78 |
} else { |
... | ... |
@@ -83,7 +83,7 @@ gheatmap <- function(p, data, offset=0, width=1, low="green", high="red", color= |
83 | 83 |
} else { |
84 | 84 |
p2 <- p2 + scale_fill_discrete(na.value=NA) #"white") |
85 | 85 |
} |
86 |
- |
|
86 |
+ |
|
87 | 87 |
if (colnames) { |
88 | 88 |
if (colnames_position == "bottom") { |
89 | 89 |
y <- 0 |
... | ... |
@@ -94,10 +94,10 @@ gheatmap <- function(p, data, offset=0, width=1, low="green", high="red", color= |
94 | 94 |
p2 <- p2 + geom_text(data=mapping, aes(x=to, y = y, label=from), size=font.size, inherit.aes = FALSE, |
95 | 95 |
angle=colnames_angle, nudge_x=colnames_offset_x, nudge_y = colnames_offset_y, hjust=hjust) |
96 | 96 |
} |
97 |
- |
|
97 |
+ |
|
98 | 98 |
p2 <- p2 + theme(legend.position="right", legend.title=element_blank()) |
99 | 99 |
## p2 <- p2 + guides(fill = guide_legend(override.aes = list(colour = NULL))) |
100 |
- |
|
100 |
+ |
|
101 | 101 |
attr(p2, "mapping") <- mapping |
102 | 102 |
return(p2) |
103 | 103 |
} |
... | ... |
@@ -8,6 +8,9 @@ fortify.treedata <- function(model, data, layout="rectangular", yscale="none", |
8 | 8 |
model <- set_branch_length(model, branch.length) |
9 | 9 |
|
10 | 10 |
x <- reorder.phylo(get.tree(model), "postorder") |
11 |
+ if (ladderize == TRUE) { |
|
12 |
+ x <- ladderize(x, right=right) |
|
13 |
+ } |
|
11 | 14 |
if (is.null(x$edge.length) || branch.length == "none") { |
12 | 15 |
xpos <- getXcoord_no_length(x) |
13 | 16 |
} else { |
... | ... |
@@ -303,7 +306,7 @@ layoutDaylight <- function( tree, branch.length ){ |
303 | 306 |
i <- 1 |
304 | 307 |
ave_change <- 1.0 |
305 | 308 |
while( i <= MAX_COUNT & ave_change > MINIMUM_AVERAGE_ANGLE_CHANGE ){ |
306 |
- cat('Iteration: ', i, '\n') |
|
309 |
+ message('Iteration: ', i) |
|
307 | 310 |
|
308 | 311 |
## Reset max_change after iterating over tree. |
309 | 312 |
total_max <- 0.0 |
... | ... |
@@ -1159,6 +1162,7 @@ getXcoord2 <- function(x, root, parent, child, len, start=0, rev=FALSE) { |
1159 | 1162 |
if (rev == TRUE) { |
1160 | 1163 |
direction <- -1 |
1161 | 1164 |
} |
1165 |
+ |
|
1162 | 1166 |
while(anyNA(x)) { |
1163 | 1167 |
idx <- which(parent %in% currentNode) |
1164 | 1168 |
newNode <- child[idx] |
... | ... |
@@ -1267,9 +1271,15 @@ getYcoord <- function(tr, step=1) { |
1267 | 1271 |
y[tip.idx] <- 1:Ntip * step |
1268 | 1272 |
y[-tip.idx] <- NA |
1269 | 1273 |
|
1274 |
+ ## use lookup table |
|
1275 |
+ pvec <- integer(max(tr$edge)) |
|
1276 |
+ pvec[child] = parent |
|
1277 |
+ |
|
1270 | 1278 |
currentNode <- 1:Ntip |
1271 | 1279 |
while(anyNA(y)) { |
1272 |
- pNode <- unique(parent[child %in% currentNode]) |
|
1280 |
+ ## pNode <- unique(parent[child %in% currentNode]) |
|
1281 |
+ pNode <- unique(pvec[currentNode]) |
|
1282 |
+ |
|
1273 | 1283 |
## piping of magrittr is slower than nested function call. |
1274 | 1284 |
## pipeR is fastest, may consider to use pipeR |
1275 | 1285 |
## |
... | ... |
@@ -69,7 +69,7 @@ __G Yu__, DK Smith, H Zhu, Y Guan, TTY Lam^\*^. ggtree: an R package for visuali |
69 | 69 |
### Citation |
70 | 70 |
|
71 | 71 |
`r badge_citation("HtEfBTGE9r8C", "7268358477862164627", "green")` |
72 |
-`r badge_sci_citation("http://apps.webofknowledge.com/InboundService.do?mode=FullRecord&customersID=RID&IsProductCode=Yes&product=WOS&Init=Yes&Func=Frame&DestFail=http%3A%2F%2Fwww.webofknowledge.com&action=retrieve&SrcApp=RID&SrcAuth=RID&SID=U2EMQLA1958R5PUSAKt&UT=WOS%3A000393305300004", "green")` |
|
72 |
+ |
|
73 | 73 |
|
74 | 74 |
|
75 | 75 |
```{r echo=F, comment=NA} |
... | ... |
@@ -4,9 +4,9 @@ ggtree: an R package for visualization and annotation of phylogenetic trees with |
4 | 4 |
|
5 | 5 |
<img src="https://raw.githubusercontent.com/Bioconductor/BiocStickers/master/ggtree/ggtree.png" height="200" align="right" /> |
6 | 6 |
|
7 |
-[](https://bioconductor.org/packages/ggtree) [](https://github.com/guangchuangyu/ggtree) [](https://www.bioconductor.org/packages/devel/bioc/html/ggtree.html#since) [](https://bioconductor.org/packages/stats/bioc/ggtree) [](https://bioconductor.org/packages/stats/bioc/ggtree) |
|
7 |
+[](https://bioconductor.org/packages/ggtree) [](https://github.com/guangchuangyu/ggtree) [](https://www.bioconductor.org/packages/devel/bioc/html/ggtree.html#since) [](https://bioconductor.org/packages/stats/bioc/ggtree) [](https://bioconductor.org/packages/stats/bioc/ggtree) |
|
8 | 8 |
|
9 |
-[](http://www.repostatus.org/#active) [](https://codecov.io/gh/GuangchuangYu/ggtree) [](https://github.com/GuangchuangYu/ggtree/commits/master) [](https://github.com/GuangchuangYu/ggtree/network) [](https://github.com/GuangchuangYu/ggtree/stargazers) [](https://awesome-r.com/#awesome-r-graphic-displays) |
|
9 |
+[](http://www.repostatus.org/#active) [](https://codecov.io/gh/GuangchuangYu/ggtree) [](https://github.com/GuangchuangYu/ggtree/commits/master) [](https://github.com/GuangchuangYu/ggtree/network) [](https://github.com/GuangchuangYu/ggtree/stargazers) [](https://awesome-r.com/#awesome-r-graphic-displays) |
|
10 | 10 |
|
11 | 11 |
[](https://www.bioconductor.org/packages/devel/bioc/html/ggtree.html#archives) [](https://bioconductor.org/checkResults/devel/bioc-LATEST/ggtree/) [](https://travis-ci.org/GuangchuangYu/ggtree) [](https://ci.appveyor.com/project/GuangchuangYu/ggtree) |
12 | 12 |
|
... | ... |
@@ -27,56 +27,56 @@ Please cite the following article when using `ggtree`: |
27 | 27 |
|
28 | 28 |
**G Yu**, DK Smith, H Zhu, Y Guan, TTY Lam<sup>\*</sup>. ggtree: an R package for visualization and annotation of phylogenetic trees with their covariates and other associated data. ***Methods in Ecology and Evolution***. 2017, 8(1):28-36. |
29 | 29 |
|
30 |
-[](http://dx.doi.org/10.1111/2041-210X.12628) [](https://www.altmetric.com/details/10533079) |
|
30 |
+[](http://dx.doi.org/10.1111/2041-210X.12628) [](https://www.altmetric.com/details/10533079) |
|
31 | 31 |
|
32 | 32 |
------------------------------------------------------------------------ |
33 | 33 |
|
34 | 34 |
### Citation |
35 | 35 |
|
36 |
-[](https://scholar.google.com.hk/scholar?oi=bibs&hl=en&cites=7268358477862164627) [](http://apps.webofknowledge.com/InboundService.do?mode=FullRecord&customersID=RID&IsProductCode=Yes&product=WOS&Init=Yes&Func=Frame&DestFail=http%3A%2F%2Fwww.webofknowledge.com&action=retrieve&SrcApp=RID&SrcAuth=RID&SID=U2EMQLA1958R5PUSAKt&UT=WOS%3A000393305300004) |
|
36 |
+[](https://scholar.google.com.hk/scholar?oi=bibs&hl=en&cites=7268358477862164627) |
|
37 | 37 |
|
38 | 38 |
+-+---------+---------+---------+---------+---------+---+ |
39 |
- | * | |
|
39 |
+ 20 + * + |
|
40 | 40 |
| | |
41 | 41 |
| | |
42 |
- 10 + + |
|
42 |
+ 15 + + |
|
43 | 43 |
| | |
44 | 44 |
| | |
45 |
+ 10 + + |
|
45 | 46 |
| | |
46 | 47 |
| | |
47 | 48 |
5 + + |
48 |
- | | |
|
49 | 49 |
| | |
50 | 50 |
| * | |
51 |
- +-+---------+---------+---------+---------+---------+---+ |
|
51 |
+ 0 +-+---------+---------+---------+---------+---------+---+ |
|
52 | 52 |
2016 2016.2 2016.4 2016.6 2016.8 2017 |
53 | 53 |
|
54 | 54 |
### Download stats |
55 | 55 |
|
56 |
-[](https://bioconductor.org/packages/stats/bioc/ggtree) [](https://bioconductor.org/packages/stats/bioc/ggtree) [](https://bioconductor.org/packages/stats/bioc/ggtree) |
|
56 |
+[](https://bioconductor.org/packages/stats/bioc/ggtree) [](https://bioconductor.org/packages/stats/bioc/ggtree) [](https://bioconductor.org/packages/stats/bioc/ggtree) |
|
57 | 57 |
|
58 |
- ++-------------------+------------------+-------------------+------------------+--------------+ |
|
59 |
- 3000 + * + |
|
58 |
+ ++------------------+-----------------+-----------------+-----------------+------------------++ |
|
59 |
+ 3000 + * + |
|
60 | 60 |
| | |
61 | 61 |
| | |
62 | 62 |
2500 + + |
63 | 63 |
| | |
64 | 64 |
| | |
65 | 65 |
| | |
66 |
- 2000 + + |
|
67 |
- | * * * | |
|
68 |
- | * * | |
|
66 |
+ 2000 + * * + |
|
67 |
+ | * * * | |
|
68 |
+ | * * | |
|
69 | 69 |
1500 + + |
70 | 70 |
| | |
71 |
- | * | |
|
72 |
- | * * * * | |
|
73 |
- 1000 + * * + |
|
74 |
- | * * | |
|
75 |
- | * * * | |
|
76 |
- | * | |
|
77 |
- 500 + * * + |
|
78 |
- | * * | |
|
79 |
- | * | |
|
80 |
- 0 + * * * + |
|
81 |
- ++-------------------+------------------+-------------------+------------------+--------------+ |
|
82 |
- 2015 2015.5 2016 2016.5 2017 |
|
71 |
+ | * | |
|
72 |
+ | * * * * | |
|
73 |
+ 1000 + * * + |
|
74 |
+ | * * | |
|
75 |
+ | * * * | |
|
76 |
+ | * | |
|
77 |
+ 500 + * * + |
|
78 |
+ | * * | |
|
79 |
+ | * | |
|
80 |
+ 0 + * * * + |
|
81 |
+ ++------------------+-----------------+-----------------+-----------------+------------------++ |
|
82 |
+ 2015 2015.5 2016 2016.5 2017 2017.5 |
... | ... |
@@ -258,6 +258,7 @@ |
258 | 258 |
Annotation</a></li> |
259 | 259 |
<li><a href="https://bioconductor.org/packages/devel/bioc/vignettes/ggtree/inst/doc/ggtreeUtilities.html">ggtree |
260 | 260 |
utilities</a></li> |
261 |
+<li><a href="https://cran.r-project.org/web/packages/emojifont/vignettes/phylomoji.html">Phylomoji</a></li> |
|
261 | 262 |
</ul> |
262 | 263 |
<h2 id="blog-posts"><i class="fa fa-wordpress"></i> Blog posts</h2> |
263 | 264 |
<h3 id="news-and-updates"><i class="fa fa-angle-double-right"></i> News and updates</h3> |
... | ... |
@@ -220,8 +220,7 @@ |
220 | 220 |
<p><link rel="stylesheet" href="https://guangchuangyu.github.io/css/font-awesome.min.css"></p> |
221 | 221 |
<p><a href="https://github.com/GuangchuangYu/featured_img">Let us know</a> if you have |
222 | 222 |
published using <code>ggtree</code> and your publication will be featured here.</p> |
223 |
-<p><a href="https://scholar.google.com.hk/scholar?oi=bibs&hl=en&cites=7268358477862164627"><img alt="citation" src="https://img.shields.io/badge/cited%20by-15-blue.svg?style=flat" /></a> |
|
224 |
-<a href="http://apps.webofknowledge.com/InboundService.do?mode=FullRecord&customersID=RID&IsProductCode=Yes&product=WOS&Init=Yes&Func=Frame&DestFail=http%3A%2F%2Fwww.webofknowledge.com&action=retrieve&SrcApp=RID&SrcAuth=RID&SID=U2EMQLA1958R5PUSAKt&UT=WOS%3A000393305300004"><img alt="" src="https://img.shields.io/badge/cited%20in%20Web%20of%20Science%20Core%20Collection-6-blue.svg?style=flat" /></a></p> |
|
223 |
+<p><a href="https://scholar.google.com.hk/scholar?oi=bibs&hl=en&cites=7268358477862164627"><img alt="citation" src="https://img.shields.io/badge/cited%20by-22-blue.svg?style=flat" /></a></p> |
|
225 | 224 |
<p><link rel='stylesheet' href=https://guangchuangyu.github.io/resume/css/morris.css> |
226 | 225 |
<script src='https://guangchuangyu.github.io/resume/css/jquery.min.js' type='text/javascript'></script> |
227 | 226 |
<script src='https://guangchuangyu.github.io/resume/css/raphael-min.js' type='text/javascript'></script> |
... | ... |
@@ -235,12 +234,12 @@ published using <code>ggtree</code> and your publication will be featured here.< |
235 | 234 |
height: 300px; |
236 | 235 |
}<br /> |
237 | 236 |
</style> |
238 |
-<div id="chart7719fd4cfa" class="rChart morris"></p> |
|
237 |
+<div id="chart11855a166b40" class="rChart morris"></p> |
|
239 | 238 |
</div> |
240 | 239 |
|
241 | 240 |
<script type='text/javascript'> |
242 | 241 |
var chartParams = { |
243 |
- "element": "chart7719fd4cfa", |
|
242 |
+ "element": "chart11855a166b40", |
|
244 | 243 |
"width": 800, |
245 | 244 |
"height": 400, |
246 | 245 |
"xkey": "year", |
... | ... |
@@ -255,11 +254,11 @@ published using <code>ggtree</code> and your publication will be featured here.< |
255 | 254 |
}, |
256 | 255 |
{ |
257 | 256 |
"year": 2017, |
258 |
-"cites": 14, |
|
257 |
+"cites": 21, |
|
259 | 258 |
"pubid": "HtEfBTGE9r8C" |
260 | 259 |
} |
261 | 260 |
], |
262 |
-"id": "chart7719fd4cfa", |
|
261 |
+"id": "chart11855a166b40", |
|
263 | 262 |
"labels": "cites" |
264 | 263 |
}, |
265 | 264 |
chartType = "Bar" |
... | ... |
@@ -274,6 +273,10 @@ published using <code>ggtree</code> and your publication will be featured here.< |
274 | 273 |
<p><a href="http://dx.doi.org/10.1073/pnas.1617959114">Phylogenetic analysis of the human antibody repertoire reveals |
275 | 274 |
quantitative signatures of immune senescence and |
276 | 275 |
aging</a>. <strong><em>PNAS</em></strong>, 2017</p> |
276 |
+<p><a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5376617/">Horses in Denmark Are a Reservoir of Diverse Clones of |
|
277 |
+Methicillin-Resistant and -Susceptible Staphylococcus |
|
278 |
+aureus</a>. |
|
279 |
+<strong><em>Frontiers in Microbiology</em></strong>, 2017, 8:543</p> |
|
277 | 280 |
<p><a href="https://microbiomejournal.biomedcentral.com/articles/10.1186/s40168-017-0232-3">Gut metagenomes of type 2 diabetic patients have characteristic |
278 | 281 |
single-nucleotide polymorphism distribution in <em>Bacteroides |
279 | 282 |
coprocola</em></a>. |
... | ... |
@@ -282,7 +285,7 @@ coprocola</em></a>. |
282 | 285 |
<p><a href="http://aem.asm.org/content/82/22/6788.short">Function and Phylogeny of Bacterial Butyryl Coenzyme A:Acetate |
283 | 286 |
Transferases and Their Diversity in the Proximal Colon of |
284 | 287 |
Swine</a>. <strong><em>Applied and |
285 |
-Environmental Microbiology</em></strong>. 2016,82(22):6788-6798.</p></div> |
|
288 |
+Environmental Microbiology</em></strong>. 2016, 82(22):6788-6798.</p></div> |
|
286 | 289 |
</div> |
287 | 290 |
|
288 | 291 |
<footer class="col-md-12"> |
... | ... |
@@ -218,11 +218,16 @@ |
218 | 218 |
<!-- AddToAny END --> |
219 | 219 |
|
220 | 220 |
<p><link rel="stylesheet" href="https://guangchuangyu.github.io/css/font-awesome.min.css"></p> |
221 |
-<p><a href="https://scholar.google.com.hk/scholar?oi=bibs&hl=en&cites=7268358477862164627"><img alt="citation" src="https://img.shields.io/badge/cited%20by-15-blue.svg?style=flat" /></a></p> |
|
221 |
+<p><a href="https://scholar.google.com.hk/scholar?oi=bibs&hl=en&cites=7268358477862164627"><img alt="citation" src="https://img.shields.io/badge/cited%20by-22-blue.svg?style=flat" /></a></p> |
|
222 | 222 |
<!-- citation:=HtEfBTGE9r8C:=7268358477862164627 --> |
223 | 223 |
|
224 | 224 |
<h2 id="journal-articles"><i class="fa fa-mortar-board"></i> Journal Articles</h2> |
225 | 225 |
<ul> |
226 |
+<li><a href="http://dx.doi.org/10.3389/fmicb.2017.00543">http://dx.doi.org/10.3389/fmicb.2017.00543</a></li> |
|
227 |
+</ul> |
|
228 |
+<p><img alt="" src="https://guangchuangyu.github.io/featured_img/ggtree/fmicb-08-00543-g0002.jpg" /></p> |
|
229 |
+<hr /> |
|
230 |
+<ul> |
|
226 | 231 |
<li><a href="http://dx.doi.org/10.1186/s40168-017-0232-3">http://dx.doi.org/10.1186/s40168-017-0232-3</a></li> |
227 | 232 |
</ul> |
228 | 233 |
<p><img alt="" src="https://guangchuangyu.github.io/featured_img/ggtree/40168_2017_232_Fig2_HTML.gif" /></p> |
... | ... |
@@ -232,10 +232,10 @@ |
232 | 232 |
<p><img src="https://raw.githubusercontent.com/Bioconductor/BiocStickers/master/ggtree/ggtree.png" height="200" align="right" /></p> |
233 | 233 |
<p><link rel="stylesheet" href="https://guangchuangyu.github.io/css/font-awesome.min.css"> |
234 | 234 |
<link rel="stylesheet" href="https://guangchuangyu.github.io/css/academicons.min.css"></p> |
235 |
-<p><a href="https://bioconductor.org/packages/ggtree"><img alt="" src="https://img.shields.io/badge/release%20version-1.6.11-blue.svg?style=flat" /></a> |
|
236 |
-<a href="https://github.com/guangchuangyu/ggtree"><img alt="" src="https://img.shields.io/badge/devel%20version-1.7.10-blue.svg?style=flat" /></a> |
|
237 |
-<a href="https://bioconductor.org/packages/stats/bioc/ggtree"><img alt="" src="https://img.shields.io/badge/download-14336/total-blue.svg?style=flat" /></a> |
|
238 |
-<a href="https://bioconductor.org/packages/stats/bioc/ggtree"><img alt="" src="https://img.shields.io/badge/download-1385/month-blue.svg?style=flat" /></a></p> |
|
235 |
+<p><a href="https://bioconductor.org/packages/ggtree"><img alt="" src="https://img.shields.io/badge/release%20version-1.8.1-blue.svg?style=flat" /></a> |
|
236 |
+<a href="https://github.com/guangchuangyu/ggtree"><img alt="" src="https://img.shields.io/badge/devel%20version-1.9.1-blue.svg?style=flat" /></a> |
|
237 |
+<a href="https://bioconductor.org/packages/stats/bioc/ggtree"><img alt="" src="https://img.shields.io/badge/download-16674/total-blue.svg?style=flat" /></a> |
|
238 |
+<a href="https://bioconductor.org/packages/stats/bioc/ggtree"><img alt="" src="https://img.shields.io/badge/download-1117/month-blue.svg?style=flat" /></a></p> |
|
239 | 239 |
<p>The <code>ggtree</code> package extending the <em>ggplot2</em> package. It based on |
240 | 240 |
grammar of graphics and takes all the good parts of <em>ggplot2</em>. <em>ggtree</em> |
241 | 241 |
is designed for not only viewing phylogenetic tree but also displaying |
... | ... |
@@ -256,9 +256,8 @@ University of Hong Kong.</p> |
256 | 256 |
<h2 id="citation"><i class="fa fa-book"></i> Citation</h2> |
257 | 257 |
<p>Please cite the following article when using <code>ggtree</code>:</p> |
258 | 258 |
<p><a href="http://dx.doi.org/10.1111/2041-210X.12628"><img alt="" src="https://img.shields.io/badge/doi-10.1111/2041--210X.12628-blue.svg?style=flat" /></a> |
259 |
-<a href="https://www.altmetric.com/details/10533079"><img alt="" src="https://img.shields.io/badge/Altmetric-348-blue.svg?style=flat" /></a> |
|
260 |
-<a href="https://scholar.google.com.hk/scholar?oi=bibs&hl=en&cites=7268358477862164627"><img alt="citation" src="https://img.shields.io/badge/cited%20by-15-blue.svg?style=flat" /></a> |
|
261 |
-<a href="http://apps.webofknowledge.com/InboundService.do?mode=FullRecord&customersID=RID&IsProductCode=Yes&product=WOS&Init=Yes&Func=Frame&DestFail=http%3A%2F%2Fwww.webofknowledge.com&action=retrieve&SrcApp=RID&SrcAuth=RID&SID=U2EMQLA1958R5PUSAKt&UT=WOS%3A000393305300004"><img alt="" src="https://img.shields.io/badge/cited%20in%20Web%20of%20Science%20Core%20Collection-6-blue.svg?style=flat" /></a></p> |
|
259 |
+<a href="https://www.altmetric.com/details/10533079"><img alt="" src="https://img.shields.io/badge/Altmetric-345-blue.svg?style=flat" /></a> |
|
260 |
+<a href="https://scholar.google.com.hk/scholar?oi=bibs&hl=en&cites=7268358477862164627"><img alt="citation" src="https://img.shields.io/badge/cited%20by-22-blue.svg?style=flat" /></a></p> |
|
262 | 261 |
<p><strong>G Yu</strong>, DK Smith, H Zhu, Y Guan, TTY Lam<sup>*</sup>. ggtree: an R |
263 | 262 |
package for visualization and annotation of phylogenetic trees with |
264 | 263 |
their covariates and other associated data. <strong><em>Methods in Ecology and |
... | ... |
@@ -2,7 +2,7 @@ |
2 | 2 |
"docs": [ |
3 | 3 |
{ |
4 | 4 |
"location": "/", |
5 |
- "text": "ggtree: visualization and annotation of phylogenetic trees\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nThe \nggtree\n package extending the \nggplot2\n package. It based on\ngrammar of graphics and takes all the good parts of \nggplot2\n. \nggtree\n\nis designed for not only viewing phylogenetic tree but also displaying\nannotation data on the tree. \nggtree\n is released within the\n\nBioconductor\n project and\nthe source code is hosted on\n\n\nGitHub\n.\n\n\n Authors\n\n\nGuangchuang Yu and Tommy Tsan-Yuk Lam, School of Public Health, The\nUniversity of Hong Kong.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Citation\n\n\nPlease cite the following article when using \nggtree\n:\n\n\n\n\n\n\n\n\n\n\nG Yu\n, DK Smith, H Zhu, Y Guan, TTY Lam\n*\n. ggtree: an R\npackage for visualization and annotation of phylogenetic trees with\ntheir covariates and other associated data. \nMethods in Ecology and\nEvolution\n. 2017, 8(1):28-36.\n\n\n Featured Articles\n\n\n\n\n Find out more on\n\n \nFeatured\nArticles\n.\n\n\n Installation\n\n\nInstall \nggtree\n is easy, follow the guide on the \nBioconductor\npage\n:\n\n\n## try http:// if https:// URLs are not supported\nsource(\nhttps://bioconductor.org/biocLite.R\n)\n## biocLite(\nBiocUpgrade\n) ## you may need this\nbiocLite(\nggtree\n)\n\n\n\n\nIf you have problems when installing some of the dependent packages,\nplease refer to the\n\nggtree-installation\n\nwiki page.\n\n\n Overview\n\n\n Getting tree into R\n\n\n\n\ntree parsers: bring evolution evidences to be used/analyzed in \nR\n\n\nmerge_tree\n: allows evolution evidences to be merged and compared\n\n\nfortify\n methods: convert tree objects into tidy data frame\n\n\n\n\n Tree visualization \n annotation\n\n\n\n\nparsing tree as a collection of nodes allows grammar of graphics to\n be supported\n\n\ngeom_tree\n: extends \nggplot2\n to support tree structure\n\n\nseveral layers and functions for tree annotation\n\n\nsupports annotating phylogenetic trees with user's own data\n\n\n\n\n Tree manipulation\n\n\n\n\nhelper functions for tree manipulation, make it possible to explore\n the tree visually\n\n\n\n\n Find out details and examples on\n\n\n\nDocumentation\n.\n\n\n Projects that depend on \nggtree\n\n\n CRAN packages\n\n\n\n\nharrietr\n: Wrangle\n Phylogenetic Distance Matrices and Other Utilities\n\n\n\n\n Bioconductor packages\n\n\n\n\nLINC\n: co-expression of\n lincRNAs and protein-coding genes\n\n\nLymphoSeq\n:\n Analyze high-throughput sequencing of T and B cell receptors\n\n\nphilr\n: Phylogenetic\n partitioning based ILR transform for metagenomics data\n\n\n\n\n Other applications\n\n\n\n\nBreadCrumbs\n:\n Collection of scripts for metagenomics analysis\n\n\nDegeneratePrimerTools\n:\n Utilities for Creating and Validating Degenerate primers\n\n\nphyloscan\n: scan phylogenies\n created along a genome for patterns\n\n\n\n\n Feedback\n\n\n\n \n Please make sure you have followed \nthe important guide\n before posting any issue/question\n\n \n For bugs or feature requests, please post to \n \ngithub issue\n\n \n For user questions, please post to \n \ngoogle group\n\n \n We are also following every post tagged with \nggtree\n on \nBioconductor support site\n and \nBiostars\n\n \n Join the group chat on \n and", |
|
5 |
+ "text": "ggtree: visualization and annotation of phylogenetic trees\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nThe \nggtree\n package extending the \nggplot2\n package. It based on\ngrammar of graphics and takes all the good parts of \nggplot2\n. \nggtree\n\nis designed for not only viewing phylogenetic tree but also displaying\nannotation data on the tree. \nggtree\n is released within the\n\nBioconductor\n project and\nthe source code is hosted on\n\n\nGitHub\n.\n\n\n Authors\n\n\nGuangchuang Yu and Tommy Tsan-Yuk Lam, School of Public Health, The\nUniversity of Hong Kong.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Citation\n\n\nPlease cite the following article when using \nggtree\n:\n\n\n\n\n\n\n\n\nG Yu\n, DK Smith, H Zhu, Y Guan, TTY Lam\n*\n. ggtree: an R\npackage for visualization and annotation of phylogenetic trees with\ntheir covariates and other associated data. \nMethods in Ecology and\nEvolution\n. 2017, 8(1):28-36.\n\n\n Featured Articles\n\n\n\n\n Find out more on\n\n \nFeatured\nArticles\n.\n\n\n Installation\n\n\nInstall \nggtree\n is easy, follow the guide on the \nBioconductor\npage\n:\n\n\n## try http:// if https:// URLs are not supported\nsource(\nhttps://bioconductor.org/biocLite.R\n)\n## biocLite(\nBiocUpgrade\n) ## you may need this\nbiocLite(\nggtree\n)\n\n\n\n\nIf you have problems when installing some of the dependent packages,\nplease refer to the\n\nggtree-installation\n\nwiki page.\n\n\n Overview\n\n\n Getting tree into R\n\n\n\n\ntree parsers: bring evolution evidences to be used/analyzed in \nR\n\n\nmerge_tree\n: allows evolution evidences to be merged and compared\n\n\nfortify\n methods: convert tree objects into tidy data frame\n\n\n\n\n Tree visualization \n annotation\n\n\n\n\nparsing tree as a collection of nodes allows grammar of graphics to\n be supported\n\n\ngeom_tree\n: extends \nggplot2\n to support tree structure\n\n\nseveral layers and functions for tree annotation\n\n\nsupports annotating phylogenetic trees with user's own data\n\n\n\n\n Tree manipulation\n\n\n\n\nhelper functions for tree manipulation, make it possible to explore\n the tree visually\n\n\n\n\n Find out details and examples on\n\n\n\nDocumentation\n.\n\n\n Projects that depend on \nggtree\n\n\n CRAN packages\n\n\n\n\nharrietr\n: Wrangle\n Phylogenetic Distance Matrices and Other Utilities\n\n\n\n\n Bioconductor packages\n\n\n\n\nLINC\n: co-expression of\n lincRNAs and protein-coding genes\n\n\nLymphoSeq\n:\n Analyze high-throughput sequencing of T and B cell receptors\n\n\nphilr\n: Phylogenetic\n partitioning based ILR transform for metagenomics data\n\n\n\n\n Other applications\n\n\n\n\nBreadCrumbs\n:\n Collection of scripts for metagenomics analysis\n\n\nDegeneratePrimerTools\n:\n Utilities for Creating and Validating Degenerate primers\n\n\nphyloscan\n: scan phylogenies\n created along a genome for patterns\n\n\n\n\n Feedback\n\n\n\n \n Please make sure you have followed \nthe important guide\n before posting any issue/question\n\n \n For bugs or feature requests, please post to \n \ngithub issue\n\n \n For user questions, please post to \n \ngoogle group\n\n \n We are also following every post tagged with \nggtree\n on \nBioconductor support site\n and \nBiostars\n\n \n Join the group chat on \n and", |
|
6 | 6 |
"title": "Home" |
7 | 7 |
}, |
8 | 8 |
{ |
... | ... |
@@ -17,7 +17,7 @@ |
17 | 17 |
}, |
18 | 18 |
{ |
19 | 19 |
"location": "/#citation", |
20 |
- "text": "Please cite the following article when using ggtree : G Yu , DK Smith, H Zhu, Y Guan, TTY Lam * . ggtree: an R\npackage for visualization and annotation of phylogenetic trees with\ntheir covariates and other associated data. Methods in Ecology and\nEvolution . 2017, 8(1):28-36.", |
|
20 |
+ "text": "Please cite the following article when using ggtree : G Yu , DK Smith, H Zhu, Y Guan, TTY Lam * . ggtree: an R\npackage for visualization and annotation of phylogenetic trees with\ntheir covariates and other associated data. Methods in Ecology and\nEvolution . 2017, 8(1):28-36.", |
|
21 | 21 |
"title": " Citation" |
22 | 22 |
}, |
23 | 23 |
{ |
... | ... |
@@ -77,12 +77,12 @@ |
77 | 77 |
}, |
78 | 78 |
{ |
79 | 79 |
"location": "/documentation/", |
80 |
- "text": "Vignettes\n\n\n\n\nggtree\n\n\nTree Data\n Import\n\n\nTree\n Visualization\n\n\nTree\n Annotation\n\n\nTree\n Manipulation\n\n\nAdvance Tree\n Annotation\n\n\nggtree\n utilities\n\n\n\n\n Blog posts\n\n\n News and updates\n\n\n\n\nviewing and annotating phylogenetic tree with\n ggtree\n\n\nggtree in Bioconductor\n 3.1\n\n\nBioC 3.1: NEWS of my BioC\n packages\n\n\nBioC 3.2: NEWS of my BioC\n packages\n\n\nNews of\n ggtree\n\n\nBioC 3.3: NEWS of my BioC\n packages\n\n\nBioC 3.4: NEWS of my BioC\n packages\n\n\nggtree paper\n published\n\n\n\n\n Data manipulation\n\n\n\n\nsubsetting data in\n ggtree\n\n\nggtree supports phylip tree\n format\n\n\nconvert graphic object to tree object using\n treeio\n\n\n\n\n Tree visualization\n\n\n\n\nggtree - updating a tree\n view\n\n\nan example of drawing beast tree using\n ggtree\n\n\nPhylogenetic trees in R using\n ggtree\n\n \n The Molecular Ecologist\n\n\n\n\n Tree annotation\n\n\n\n\nlabel edge number in\n ggtree\n\n\nEdge coloring with user\n data\n\n\nsubview\n\n\nAnnotate a phylogenetic tree with\n insets\n\n\nggtree annotate phylogenetic tree with local\n images\n\n\nembed images in ggplot2 via subview and annotate a phylogenetic\n tree with images using inset\n function\n\n\nidentify method for\n ggtree\n\n\nfacet_plot: a general solution to associate data with phylogenetic\n tree\n\n\nalign genomic features with phylogenetic\n tree\n\n\nxlim_tree: set x axis limits for only Tree\n panel\n\n\nadd layer to specific panel of facet_plot\n output\n\n\n\n\n Tree manipulation\n\n\n\n\nflip and rotate branches in\n ggtree\n\n\n\n\n Application\n\n\n\n\nggtree for microbiome\n data\n\n\nggtree for outbreak\n data\n\n\nggtree version of\n plotTree\n\n\nreproducible logo generated by\n ggtree\n\n\n\n\n Funny stuff\n\n\n\n\nggtree with funny\n fonts\n\n\ncomic phylogenetic tree with ggtree and\n comicR\n\n\nuse emoji font in\n R\n\n\n\n\n User's feedback\n\n\n\n\ntweets of\n ggtree\n\n\nJoin the group chat on\n \n\n and\n \n\n\n\n\n Find out more on\n\nhttps://guangchuangyu.github.io/tags/ggtree/\n.\n\n\n Slides\n\n\n\n\nGenerating publication quality figures using R \n\n ggplot2\n\n\nggtree for visualization and annotation of phylogenetic\n trees\n\n\n\n\n Video\n\n\n\n\ninteractive clade\n highlighting\n\n\ninteractive rotating\n clades\n\n\ninteractive clade\n labeling\n\n\n\n\n Workflow\n\n\n\n\nrecreate a tree from a publication (\nBloom\n \net al\n,\n \nScience\n 2010)", |
|
80 |
+ "text": "Vignettes\n\n\n\n\nggtree\n\n\nTree Data\n Import\n\n\nTree\n Visualization\n\n\nTree\n Annotation\n\n\nTree\n Manipulation\n\n\nAdvance Tree\n Annotation\n\n\nggtree\n utilities\n\n\nPhylomoji\n\n\n\n\n Blog posts\n\n\n News and updates\n\n\n\n\nviewing and annotating phylogenetic tree with\n ggtree\n\n\nggtree in Bioconductor\n 3.1\n\n\nBioC 3.1: NEWS of my BioC\n packages\n\n\nBioC 3.2: NEWS of my BioC\n packages\n\n\nNews of\n ggtree\n\n\nBioC 3.3: NEWS of my BioC\n packages\n\n\nBioC 3.4: NEWS of my BioC\n packages\n\n\nggtree paper\n published\n\n\n\n\n Data manipulation\n\n\n\n\nsubsetting data in\n ggtree\n\n\nggtree supports phylip tree\n format\n\n\nconvert graphic object to tree object using\n treeio\n\n\n\n\n Tree visualization\n\n\n\n\nggtree - updating a tree\n view\n\n\nan example of drawing beast tree using\n ggtree\n\n\nPhylogenetic trees in R using\n ggtree\n\n \n The Molecular Ecologist\n\n\n\n\n Tree annotation\n\n\n\n\nlabel edge number in\n ggtree\n\n\nEdge coloring with user\n data\n\n\nsubview\n\n\nAnnotate a phylogenetic tree with\n insets\n\n\nggtree annotate phylogenetic tree with local\n images\n\n\nembed images in ggplot2 via subview and annotate a phylogenetic\n tree with images using inset\n function\n\n\nidentify method for\n ggtree\n\n\nfacet_plot: a general solution to associate data with phylogenetic\n tree\n\n\nalign genomic features with phylogenetic\n tree\n\n\nxlim_tree: set x axis limits for only Tree\n panel\n\n\nadd layer to specific panel of facet_plot\n output\n\n\n\n\n Tree manipulation\n\n\n\n\nflip and rotate branches in\n ggtree\n\n\n\n\n Application\n\n\n\n\nggtree for microbiome\n data\n\n\nggtree for outbreak\n data\n\n\nggtree version of\n plotTree\n\n\nreproducible logo generated by\n ggtree\n\n\n\n\n Funny stuff\n\n\n\n\nggtree with funny\n fonts\n\n\ncomic phylogenetic tree with ggtree and\n comicR\n\n\nuse emoji font in\n R\n\n\n\n\n User's feedback\n\n\n\n\ntweets of\n ggtree\n\n\nJoin the group chat on\n \n\n and\n \n\n\n\n\n Find out more on\n\nhttps://guangchuangyu.github.io/tags/ggtree/\n.\n\n\n Slides\n\n\n\n\nGenerating publication quality figures using R \n\n ggplot2\n\n\nggtree for visualization and annotation of phylogenetic\n trees\n\n\n\n\n Video\n\n\n\n\ninteractive clade\n highlighting\n\n\ninteractive rotating\n clades\n\n\ninteractive clade\n labeling\n\n\n\n\n Workflow\n\n\n\n\nrecreate a tree from a publication (\nBloom\n \net al\n,\n \nScience\n 2010)", |
|
81 | 81 |
"title": "Documentation" |
82 | 82 |
}, |
83 | 83 |
{ |
84 | 84 |
"location": "/documentation/#vignettes", |
85 |
- "text": "ggtree Tree Data\n Import Tree\n Visualization Tree\n Annotation Tree\n Manipulation Advance Tree\n Annotation ggtree\n utilities", |
|
85 |
+ "text": "ggtree Tree Data\n Import Tree\n Visualization Tree\n Annotation Tree\n Manipulation Advance Tree\n Annotation ggtree\n utilities Phylomoji", |
|
86 | 86 |
"title": " Vignettes" |
87 | 87 |
}, |
88 | 88 |
{ |
... | ... |
@@ -217,27 +217,27 @@ |
217 | 217 |
}, |
218 | 218 |
{ |
219 | 219 |
"location": "/featuredArticles/", |
220 |
- "text": "Let us know\n if you have\npublished using \nggtree\n and your publication will be featured here.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n .rChart {\n display: block;\n margin-left: auto; \n margin-right: auto;\n width: 800px;\n height: 300px;\n }<br />\n \n\n\n\n\n\n\n\n\n var chartParams = {\n \"element\": \"chart7719fd4cfa\",\n\"width\": 800,\n\"height\": 400,\n\"xkey\": \"year\",\n\"ykeys\": [\n \"cites\" \n],\n\"data\": [\n {\n \"year\": 2016,\n\"cites\": 1,\n\"pubid\": \"HtEfBTGE9r8C\" \n},\n{\n \"year\": 2017,\n\"cites\": 14,\n\"pubid\": \"HtEfBTGE9r8C\" \n} \n],\n\"id\": \"chart7719fd4cfa\",\n\"labels\": \"cites\" \n},\n chartType = \"Bar\"\n new Morris[chartType](chartParams)\n\n\n\n\n\n\n\n\n\n\n 2017\n\n\nPhylogenetic analysis of the human antibody repertoire reveals\nquantitative signatures of immune senescence and\naging\n. \nPNAS\n, 2017\n\n\nGut metagenomes of type 2 diabetic patients have characteristic\nsingle-nucleotide polymorphism distribution in \nBacteroides\ncoprocola\n.\n\nMicrobiome\n, 2017, 5:15\n\n\n 2016\n\n\nFunction and Phylogeny of Bacterial Butyryl Coenzyme A:Acetate\nTransferases and Their Diversity in the Proximal Colon of\nSwine\n. \nApplied and\nEnvironmental Microbiology\n. 2016,82(22):6788-6798.", |
|
220 |
+ "text": "Let us know\n if you have\npublished using \nggtree\n and your publication will be featured here.\n\n\n\n\n\n\n\n\n\n\n\n\n\n .rChart {\n display: block;\n margin-left: auto; \n margin-right: auto;\n width: 800px;\n height: 300px;\n }<br />\n \n\n\n\n\n\n\n\n\n var chartParams = {\n \"element\": \"chart11855a166b40\",\n\"width\": 800,\n\"height\": 400,\n\"xkey\": \"year\",\n\"ykeys\": [\n \"cites\" \n],\n\"data\": [\n {\n \"year\": 2016,\n\"cites\": 1,\n\"pubid\": \"HtEfBTGE9r8C\" \n},\n{\n \"year\": 2017,\n\"cites\": 21,\n\"pubid\": \"HtEfBTGE9r8C\" \n} \n],\n\"id\": \"chart11855a166b40\",\n\"labels\": \"cites\" \n},\n chartType = \"Bar\"\n new Morris[chartType](chartParams)\n\n\n\n\n\n\n\n\n\n\n 2017\n\n\nPhylogenetic analysis of the human antibody repertoire reveals\nquantitative signatures of immune senescence and\naging\n. \nPNAS\n, 2017\n\n\nHorses in Denmark Are a Reservoir of Diverse Clones of\nMethicillin-Resistant and -Susceptible Staphylococcus\naureus\n.\n\nFrontiers in Microbiology\n, 2017, 8:543\n\n\nGut metagenomes of type 2 diabetic patients have characteristic\nsingle-nucleotide polymorphism distribution in \nBacteroides\ncoprocola\n.\n\nMicrobiome\n, 2017, 5:15\n\n\n 2016\n\n\nFunction and Phylogeny of Bacterial Butyryl Coenzyme A:Acetate\nTransferases and Their Diversity in the Proximal Colon of\nSwine\n. \nApplied and\nEnvironmental Microbiology\n. 2016, 82(22):6788-6798.", |
|
221 | 221 |
"title": "Featured Articles" |
222 | 222 |
}, |
223 | 223 |
{ |
224 | 224 |
"location": "/featuredArticles/#2017", |
225 |
- "text": "Phylogenetic analysis of the human antibody repertoire reveals\nquantitative signatures of immune senescence and\naging . PNAS , 2017 Gut metagenomes of type 2 diabetic patients have characteristic\nsingle-nucleotide polymorphism distribution in Bacteroides\ncoprocola . Microbiome , 2017, 5:15", |
|
225 |
+ "text": "Phylogenetic analysis of the human antibody repertoire reveals\nquantitative signatures of immune senescence and\naging . PNAS , 2017 Horses in Denmark Are a Reservoir of Diverse Clones of\nMethicillin-Resistant and -Susceptible Staphylococcus\naureus . Frontiers in Microbiology , 2017, 8:543 Gut metagenomes of type 2 diabetic patients have characteristic\nsingle-nucleotide polymorphism distribution in Bacteroides\ncoprocola . Microbiome , 2017, 5:15", |
|
226 | 226 |
"title": " 2017" |
227 | 227 |
}, |
228 | 228 |
{ |
229 | 229 |
"location": "/featuredArticles/#2016", |
230 |
- "text": "Function and Phylogeny of Bacterial Butyryl Coenzyme A:Acetate\nTransferases and Their Diversity in the Proximal Colon of\nSwine . Applied and\nEnvironmental Microbiology . 2016,82(22):6788-6798.", |
|
230 |
+ "text": "Function and Phylogeny of Bacterial Butyryl Coenzyme A:Acetate\nTransferases and Their Diversity in the Proximal Colon of\nSwine . Applied and\nEnvironmental Microbiology . 2016, 82(22):6788-6798.", |
|
231 | 231 |
"title": " 2016" |
232 | 232 |
}, |
233 | 233 |
{ |
234 | 234 |
"location": "/gallery/", |
235 |
- "text": "Journal Articles\n\n\n\n\nhttp://dx.doi.org/10.1186/s40168-017-0232-3\n\n\n\n\n\n\n\n\n\n\nhttp://dx.doi.org/10.1111/2041-210X.12628\n\n\n\n\n\n\n\n\n\n\nhttp://dx.doi.org/10.1128/AEM.02307-16\n\n\n\n\n\n\n\n\n\n\nhttp://dx.doi.org/10.3389%2Ffcimb.2016.00036\n\n\n\n\n\n\n\n\n\n\nhttp://dx.doi.org/10.1016/j.meegid.2015.12.006\n\n\n\n\n\n\n Tweets\n\n\n\n\n\nAdaptive radiation of\n\n\\#Darwin\n's\nfinches showing\n\n\\#genotypic\n\nand\n\n\\#morphometric\n\nevolution. Good excuse to practice with\n\n\\#ggtree\n\n\n@guangchuangyu\n\n\npic.twitter.com/JJZ3Yje58s\n\n\n\n\u2014 Will Harvey (@_wharvey)\n\nFebruary\n15, 2017\n\n\n\n\n\n\n\n\nam quite liking\n\n\\#ggtree\n\n\n\\#rstats\n\n\n\\#ggplot\n\n\npic.twitter.com/hvywS2z4ps\n\n\n\n\u2014 Nicholas E Ilott (@IlottNick)\n\nOctober\n19, 2016\n\n\n\n\n\n\n\n\nCapital G, a reproducible logo produced by\n\n\\#ggtree\n\n\n\\#dataviz\n\n\n\\#rstats\n\n\n\\#ggplot2\n\n\npic.twitter.com/lJDcgfxAEh\n\n\n\n\u2014 Guangchuang Yu (@guangchuangyu)\n\nOctober\n13, 2016\n\n\n\n\n\n\n\n\nassociate tree with different type of data by\n\n\\#ggtree\n\n\nhttps://t.co/6w755VWytZ\n\n\npic.twitter.com/K8WViEi13E\n\n\n\n\u2014 Guangchuang Yu (@guangchuangyu)\n\nSeptember\n7, 2016\n\n\n\n\n\n\n\n\nhow about using emoji to label host species in phylogenetic tree?\n\n\\#rstats\n\n\n\\#visualization\n\n\n\\#ggtree\n\n\n\\#emojifont\n\n\npic.twitter.com/MRKQvNNAUh\n\n\n\n\u2014 Guangchuang Yu (@guangchuangyu)\n\nMarch\n11, 2016\n\n\n\n\n\n\n\n\n\n\\#phylomoji\n\nwith \n\\#ggtree\n\n\npic.twitter.com/yMUtm1jYF9\n\n\n\n\u2014 Guangchuang Yu (@guangchuangyu)\n\nNovember\n19, 2015\n\n\n\n\n\n\n\n\nmultiple sequence alignment with\n\n\\#phylogenetic\n\ntree via\n\n\\#rstats\n pkg\n\n\\#ggtree\n.\n\npic.twitter.com/6CY57dLdeb\n\n\n\n\u2014 Guangchuang Yu (@guangchuangyu)\n\nMay\n22, 2015\n\n\n\n\n\n\n\n\n\n\\#comictree\n\nvia \n\\#ggtree\n\nand \n\\#comicR\n\nin \n\\#rstats\n\n\npic.twitter.com/zwCuOQ49bq\n\n\n\n\u2014 Guangchuang Yu (@guangchuangyu)\n\nMay\n15, 2015", |
|
235 |
+ "text": "Journal Articles\n\n\n\n\nhttp://dx.doi.org/10.3389/fmicb.2017.00543\n\n\n\n\n\n\n\n\n\n\nhttp://dx.doi.org/10.1186/s40168-017-0232-3\n\n\n\n\n\n\n\n\n\n\nhttp://dx.doi.org/10.1111/2041-210X.12628\n\n\n\n\n\n\n\n\n\n\nhttp://dx.doi.org/10.1128/AEM.02307-16\n\n\n\n\n\n\n\n\n\n\nhttp://dx.doi.org/10.3389%2Ffcimb.2016.00036\n\n\n\n\n\n\n\n\n\n\nhttp://dx.doi.org/10.1016/j.meegid.2015.12.006\n\n\n\n\n\n\n Tweets\n\n\n\n\n\nAdaptive radiation of\n\n\\#Darwin\n's\nfinches showing\n\n\\#genotypic\n\nand\n\n\\#morphometric\n\nevolution. Good excuse to practice with\n\n\\#ggtree\n\n\n@guangchuangyu\n\n\npic.twitter.com/JJZ3Yje58s\n\n\n\n\u2014 Will Harvey (@_wharvey)\n\nFebruary\n15, 2017\n\n\n\n\n\n\n\n\nam quite liking\n\n\\#ggtree\n\n\n\\#rstats\n\n\n\\#ggplot\n\n\npic.twitter.com/hvywS2z4ps\n\n\n\n\u2014 Nicholas E Ilott (@IlottNick)\n\nOctober\n19, 2016\n\n\n\n\n\n\n\n\nCapital G, a reproducible logo produced by\n\n\\#ggtree\n\n\n\\#dataviz\n\n\n\\#rstats\n\n\n\\#ggplot2\n\n\npic.twitter.com/lJDcgfxAEh\n\n\n\n\u2014 Guangchuang Yu (@guangchuangyu)\n\nOctober\n13, 2016\n\n\n\n\n\n\n\n\nassociate tree with different type of data by\n\n\\#ggtree\n\n\nhttps://t.co/6w755VWytZ\n\n\npic.twitter.com/K8WViEi13E\n\n\n\n\u2014 Guangchuang Yu (@guangchuangyu)\n\nSeptember\n7, 2016\n\n\n\n\n\n\n\n\nhow about using emoji to label host species in phylogenetic tree?\n\n\\#rstats\n\n\n\\#visualization\n\n\n\\#ggtree\n\n\n\\#emojifont\n\n\npic.twitter.com/MRKQvNNAUh\n\n\n\n\u2014 Guangchuang Yu (@guangchuangyu)\n\nMarch\n11, 2016\n\n\n\n\n\n\n\n\n\n\\#phylomoji\n\nwith \n\\#ggtree\n\n\npic.twitter.com/yMUtm1jYF9\n\n\n\n\u2014 Guangchuang Yu (@guangchuangyu)\n\nNovember\n19, 2015\n\n\n\n\n\n\n\n\nmultiple sequence alignment with\n\n\\#phylogenetic\n\ntree via\n\n\\#rstats\n pkg\n\n\\#ggtree\n.\n\npic.twitter.com/6CY57dLdeb\n\n\n\n\u2014 Guangchuang Yu (@guangchuangyu)\n\nMay\n22, 2015\n\n\n\n\n\n\n\n\n\n\\#comictree\n\nvia \n\\#ggtree\n\nand \n\\#comicR\n\nin \n\\#rstats\n\n\npic.twitter.com/zwCuOQ49bq\n\n\n\n\u2014 Guangchuang Yu (@guangchuangyu)\n\nMay\n15, 2015", |
|
236 | 236 |
"title": "Gallery" |
237 | 237 |
}, |
238 | 238 |
{ |
239 | 239 |
"location": "/gallery/#journal-articles", |
240 |
- "text": "http://dx.doi.org/10.1186/s40168-017-0232-3 http://dx.doi.org/10.1111/2041-210X.12628 http://dx.doi.org/10.1128/AEM.02307-16 http://dx.doi.org/10.3389%2Ffcimb.2016.00036 http://dx.doi.org/10.1016/j.meegid.2015.12.006", |
|
240 |
+ "text": "http://dx.doi.org/10.3389/fmicb.2017.00543 http://dx.doi.org/10.1186/s40168-017-0232-3 http://dx.doi.org/10.1111/2041-210X.12628 http://dx.doi.org/10.1128/AEM.02307-16 http://dx.doi.org/10.3389%2Ffcimb.2016.00036 http://dx.doi.org/10.1016/j.meegid.2015.12.006", |
|
241 | 241 |
"title": " Journal Articles" |
242 | 242 |
}, |
243 | 243 |
{ |
... | ... |
@@ -4,7 +4,7 @@ |
4 | 4 |
|
5 | 5 |
<url> |
6 | 6 |
<loc>https://guangchuangyu.github.io/ggtree/</loc> |
7 |
- <lastmod>2017-04-20</lastmod> |
|
7 |
+ <lastmod>2017-06-28</lastmod> |
|
8 | 8 |
<changefreq>daily</changefreq> |
9 | 9 |
</url> |
10 | 10 |
|
... | ... |
@@ -12,7 +12,7 @@ |
12 | 12 |
|
13 | 13 |
<url> |
14 | 14 |
<loc>https://guangchuangyu.github.io/ggtree/documentation/</loc> |
15 |
- <lastmod>2017-04-20</lastmod> |
|
15 |
+ <lastmod>2017-06-28</lastmod> |
|
16 | 16 |
<changefreq>daily</changefreq> |
17 | 17 |
</url> |
18 | 18 |
|
... | ... |
@@ -20,7 +20,7 @@ |
20 | 20 |
|
21 | 21 |
<url> |
22 | 22 |
<loc>https://guangchuangyu.github.io/ggtree/faq/</loc> |
23 |
- <lastmod>2017-04-20</lastmod> |
|
23 |
+ <lastmod>2017-06-28</lastmod> |
|
24 | 24 |
<changefreq>daily</changefreq> |
25 | 25 |
</url> |
26 | 26 |
|
... | ... |
@@ -28,7 +28,7 @@ |
28 | 28 |
|
29 | 29 |
<url> |
30 | 30 |
<loc>https://guangchuangyu.github.io/ggtree/featuredArticles/</loc> |
31 |
- <lastmod>2017-04-20</lastmod> |
|
31 |
+ <lastmod>2017-06-28</lastmod> |
|
32 | 32 |
<changefreq>daily</changefreq> |
33 | 33 |
</url> |
34 | 34 |
|
... | ... |
@@ -36,7 +36,7 @@ |
36 | 36 |
|
37 | 37 |
<url> |
38 | 38 |
<loc>https://guangchuangyu.github.io/ggtree/gallery/</loc> |
39 |
- <lastmod>2017-04-20</lastmod> |
|
39 |
+ <lastmod>2017-06-28</lastmod> |
|
40 | 40 |
<changefreq>daily</changefreq> |
41 | 41 |
</url> |
42 | 42 |
|
... | ... |
@@ -45,55 +45,55 @@ |
45 | 45 |
|
46 | 46 |
<url> |
47 | 47 |
<loc>https://guangchuangyu.github.io/ggtree/ChIPseeker/</loc> |
48 |
- <lastmod>2017-04-20</lastmod> |
|
48 |
+ <lastmod>2017-06-28</lastmod> |
|
49 | 49 |
<changefreq>daily</changefreq> |
50 | 50 |
</url> |
51 | 51 |
|
52 | 52 |
<url> |
53 | 53 |
<loc>https://guangchuangyu.github.io/ggtree/clusterProfiler/</loc> |
54 |
- <lastmod>2017-04-20</lastmod> |
|
54 |
+ <lastmod>2017-06-28</lastmod> |
|
55 | 55 |
<changefreq>daily</changefreq> |
56 | 56 |
</url> |
57 | 57 |
|
58 | 58 |
<url> |
59 | 59 |
<loc>https://guangchuangyu.github.io/ggtree/DOSE/</loc> |
60 |
- <lastmod>2017-04-20</lastmod> |
|
60 |
+ <lastmod>2017-06-28</lastmod> |
|
61 | 61 |
<changefreq>daily</changefreq> |
62 | 62 |
</url> |
63 | 63 |
|
64 | 64 |
<url> |
65 | 65 |
<loc>https://guangchuangyu.github.io/ggtree/emojifont/</loc> |
66 |
- <lastmod>2017-04-20</lastmod> |
|
66 |
+ <lastmod>2017-06-28</lastmod> |
|
67 | 67 |
<changefreq>daily</changefreq> |
68 | 68 |
</url> |
69 | 69 |
|
70 | 70 |
<url> |
71 | 71 |
<loc>https://guangchuangyu.github.io/ggtree/ggtree/</loc> |
72 |
- <lastmod>2017-04-20</lastmod> |
|
72 |
+ <lastmod>2017-06-28</lastmod> |
|
73 | 73 |
<changefreq>daily</changefreq> |
74 | 74 |
</url> |
75 | 75 |
|
76 | 76 |
<url> |
77 | 77 |
<loc>https://guangchuangyu.github.io/ggtree/GOSemSim/</loc> |
78 |
- <lastmod>2017-04-20</lastmod> |
|
78 |
+ <lastmod>2017-06-28</lastmod> |
|
79 | 79 |
<changefreq>daily</changefreq> |
80 | 80 |
</url> |
81 | 81 |
|
82 | 82 |
<url> |
83 | 83 |
<loc>https://guangchuangyu.github.io/ggtree/meshes/</loc> |
84 |
- <lastmod>2017-04-20</lastmod> |
|
84 |
+ <lastmod>2017-06-28</lastmod> |
|
85 | 85 |
<changefreq>daily</changefreq> |
86 | 86 |
</url> |
87 | 87 |
|
88 | 88 |
<url> |
89 | 89 |
<loc>https://guangchuangyu.github.io/ggtree/ReactomePA/</loc> |
90 |
- <lastmod>2017-04-20</lastmod> |
|
90 |
+ <lastmod>2017-06-28</lastmod> |
|
91 | 91 |
<changefreq>daily</changefreq> |
92 | 92 |
</url> |
93 | 93 |
|
94 | 94 |
<url> |
95 | 95 |
<loc>https://guangchuangyu.github.io/ggtree/treeio/</loc> |
96 |
- <lastmod>2017-04-20</lastmod> |
|
96 |
+ <lastmod>2017-06-28</lastmod> |
|
97 | 97 |
<changefreq>daily</changefreq> |
98 | 98 |
</url> |
99 | 99 |
|
... | ... |
@@ -37,6 +37,7 @@ output: |
37 | 37 |
Annotation](https://bioconductor.org/packages/devel/bioc/vignettes/ggtree/inst/doc/advanceTreeAnnotation.html) |
38 | 38 |
- [ggtree |
39 | 39 |
utilities](https://bioconductor.org/packages/devel/bioc/vignettes/ggtree/inst/doc/ggtreeUtilities.html) |
40 |
+- [Phylomoji](https://cran.r-project.org/web/packages/emojifont/vignettes/phylomoji.html) |
|
40 | 41 |
|
41 | 42 |
<i class="fa fa-wordpress"></i> Blog posts |
42 | 43 |
------------------------------------------ |
... | ... |
@@ -24,8 +24,7 @@ output: |
24 | 24 |
[Let us know](https://github.com/GuangchuangYu/featured_img) if you have |
25 | 25 |
published using `ggtree` and your publication will be featured here. |
26 | 26 |
|
27 |
-[](https://scholar.google.com.hk/scholar?oi=bibs&hl=en&cites=7268358477862164627) |
|
28 |
-[](http://apps.webofknowledge.com/InboundService.do?mode=FullRecord&customersID=RID&IsProductCode=Yes&product=WOS&Init=Yes&Func=Frame&DestFail=http%3A%2F%2Fwww.webofknowledge.com&action=retrieve&SrcApp=RID&SrcAuth=RID&SID=U2EMQLA1958R5PUSAKt&UT=WOS%3A000393305300004) |
|
27 |
+[](https://scholar.google.com.hk/scholar?oi=bibs&hl=en&cites=7268358477862164627) |
|
29 | 28 |
|
30 | 29 |
<link rel='stylesheet' href=https://guangchuangyu.github.io/resume/css/morris.css> |
31 | 30 |
<script src='https://guangchuangyu.github.io/resume/css/jquery.min.js' type='text/javascript'></script> |
... | ... |
@@ -40,13 +39,13 @@ published using `ggtree` and your publication will be featured here. |
40 | 39 |
height: 300px; |
41 | 40 |
} |
42 | 41 |
</style> |
43 |
-<div id="chart7719fd4cfa" class="rChart morris"> |
|
42 |
+<div id="chart11855a166b40" class="rChart morris"> |
|
44 | 43 |
|
45 | 44 |
</div> |
46 | 45 |
|
47 | 46 |
<script type='text/javascript'> |
48 | 47 |
var chartParams = { |
49 |
- "element": "chart7719fd4cfa", |
|
48 |
+ "element": "chart11855a166b40", |
|
50 | 49 |
"width": 800, |
51 | 50 |
"height": 400, |
52 | 51 |
"xkey": "year", |
... | ... |
@@ -61,11 +60,11 @@ published using `ggtree` and your publication will be featured here. |
61 | 60 |
}, |
62 | 61 |
{ |
63 | 62 |
"year": 2017, |
64 |
-"cites": 14, |
|
63 |
+"cites": 21, |
|
65 | 64 |
"pubid": "HtEfBTGE9r8C" |
66 | 65 |
} |
67 | 66 |
], |
68 |
-"id": "chart7719fd4cfa", |
|
67 |
+"id": "chart11855a166b40", |
|
69 | 68 |
"labels": "cites" |
70 | 69 |
}, |
71 | 70 |
chartType = "Bar" |
... | ... |
@@ -80,6 +79,11 @@ published using `ggtree` and your publication will be featured here. |
80 | 79 |
quantitative signatures of immune senescence and |
81 | 80 |
aging](http://dx.doi.org/10.1073/pnas.1617959114). ***PNAS***, 2017 |
82 | 81 |
|
82 |
+[Horses in Denmark Are a Reservoir of Diverse Clones of |
|
83 |
+Methicillin-Resistant and -Susceptible Staphylococcus |
|
84 |
+aureus](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5376617/). |
|
85 |
+***Frontiers in Microbiology***, 2017, 8:543 |
|
86 |
+ |
|
83 | 87 |
[Gut metagenomes of type 2 diabetic patients have characteristic |
84 | 88 |
single-nucleotide polymorphism distribution in *Bacteroides |
85 | 89 |
coprocola*](https://microbiomejournal.biomedcentral.com/articles/10.1186/s40168-017-0232-3). |
... | ... |
@@ -91,4 +95,4 @@ coprocola*](https://microbiomejournal.biomedcentral.com/articles/10.1186/s40168- |
91 | 95 |
[Function and Phylogeny of Bacterial Butyryl Coenzyme A:Acetate |
92 | 96 |
Transferases and Their Diversity in the Proximal Colon of |
93 | 97 |
Swine](http://aem.asm.org/content/82/22/6788.short). ***Applied and |
94 |
-Environmental Microbiology***. 2016,82(22):6788-6798. |
|
98 |
+Environmental Microbiology***. 2016, 82(22):6788-6798. |
... | ... |
@@ -21,12 +21,18 @@ output: |
21 | 21 |
<!-- AddToAny END --> |
22 | 22 |
<link rel="stylesheet" href="https://guangchuangyu.github.io/css/font-awesome.min.css"> |
23 | 23 |
|
24 |
-[](https://scholar.google.com.hk/scholar?oi=bibs&hl=en&cites=7268358477862164627) |
|
24 |
+[](https://scholar.google.com.hk/scholar?oi=bibs&hl=en&cites=7268358477862164627) |
|
25 | 25 |
|
26 | 26 |
<!-- citation:=HtEfBTGE9r8C:=7268358477862164627 --> |
27 | 27 |
<i class="fa fa-mortar-board"></i> Journal Articles |
28 | 28 |
--------------------------------------------------- |
29 | 29 |
|
30 |
+- <http://dx.doi.org/10.3389/fmicb.2017.00543> |
|
31 |
+ |
|
32 |
+ |
|
33 |
+ |
|
34 |
+------------------------------------------------------------------------ |
|
35 |
+ |
|
30 | 36 |
- <http://dx.doi.org/10.1186/s40168-017-0232-3> |
31 | 37 |
|
32 | 38 |
 |
... | ... |
@@ -27,10 +27,10 @@ ggtree: visualization and annotation of phylogenetic trees |
27 | 27 |
<link rel="stylesheet" href="https://guangchuangyu.github.io/css/font-awesome.min.css"> |
28 | 28 |
<link rel="stylesheet" href="https://guangchuangyu.github.io/css/academicons.min.css"> |
29 | 29 |
|
30 |
-[](https://bioconductor.org/packages/ggtree) |
|
31 |
-[](https://github.com/guangchuangyu/ggtree) |
|
32 |
-[](https://bioconductor.org/packages/stats/bioc/ggtree) |
|
33 |
-[](https://bioconductor.org/packages/stats/bioc/ggtree) |
|
30 |
+[](https://bioconductor.org/packages/ggtree) |
|
31 |
+[](https://github.com/guangchuangyu/ggtree) |
|
32 |
+[](https://bioconductor.org/packages/stats/bioc/ggtree) |
|
33 |
+[](https://bioconductor.org/packages/stats/bioc/ggtree) |
|
34 | 34 |
|
35 | 35 |
The `ggtree` package extending the *ggplot2* package. It based on |
36 | 36 |
grammar of graphics and takes all the good parts of *ggplot2*. *ggtree* |
... | ... |
@@ -60,9 +60,8 @@ University of Hong Kong. |
60 | 60 |
Please cite the following article when using `ggtree`: |
61 | 61 |
|
62 | 62 |
[](http://dx.doi.org/10.1111/2041-210X.12628) |
63 |
-[](https://www.altmetric.com/details/10533079) |
|
64 |
-[](https://scholar.google.com.hk/scholar?oi=bibs&hl=en&cites=7268358477862164627) |
|
65 |
-[](http://apps.webofknowledge.com/InboundService.do?mode=FullRecord&customersID=RID&IsProductCode=Yes&product=WOS&Init=Yes&Func=Frame&DestFail=http%3A%2F%2Fwww.webofknowledge.com&action=retrieve&SrcApp=RID&SrcAuth=RID&SID=U2EMQLA1958R5PUSAKt&UT=WOS%3A000393305300004) |
|
63 |
+[](https://www.altmetric.com/details/10533079) |
|
64 |
+[](https://scholar.google.com.hk/scholar?oi=bibs&hl=en&cites=7268358477862164627) |
|
66 | 65 |
|
67 | 66 |
**G Yu**, DK Smith, H Zhu, Y Guan, TTY Lam<sup>\*</sup>. ggtree: an R |
68 | 67 |
package for visualization and annotation of phylogenetic trees with |
... | ... |
@@ -20,6 +20,7 @@ html_preview: false |
20 | 20 |
+ [Tree Manipulation](https://bioconductor.org/packages/devel/bioc/vignettes/ggtree/inst/doc/treeManipulation.html) |
21 | 21 |
+ [Advance Tree Annotation](https://bioconductor.org/packages/devel/bioc/vignettes/ggtree/inst/doc/advanceTreeAnnotation.html) |
22 | 22 |
+ [ggtree utilities](https://bioconductor.org/packages/devel/bioc/vignettes/ggtree/inst/doc/ggtreeUtilities.html) |
23 |
++ [Phylomoji](https://cran.r-project.org/web/packages/emojifont/vignettes/phylomoji.html) |
|
23 | 24 |
|
24 | 25 |
|
25 | 26 |
## <i class="fa fa-wordpress"></i> Blog posts |
... | ... |
@@ -16,7 +16,7 @@ html_preview: false |
16 | 16 |
|
17 | 17 |
|
18 | 18 |
`r badge_citation("HtEfBTGE9r8C", "7268358477862164627", "blue")` |
19 |
-`r badge_sci_citation("http://apps.webofknowledge.com/InboundService.do?mode=FullRecord&customersID=RID&IsProductCode=Yes&product=WOS&Init=Yes&Func=Frame&DestFail=http%3A%2F%2Fwww.webofknowledge.com&action=retrieve&SrcApp=RID&SrcAuth=RID&SID=U2EMQLA1958R5PUSAKt&UT=WOS%3A000393305300004", "blue")` |
|
19 |
+ |
|
20 | 20 |
|
21 | 21 |
`r article_citation_trend("HtEfBTGE9r8C")` |
22 | 22 |
|
... | ... |
@@ -29,11 +29,17 @@ html_preview: false |
29 | 29 |
|
30 | 30 |
[Phylogenetic analysis of the human antibody repertoire reveals quantitative signatures of immune senescence and aging](http://dx.doi.org/10.1073/pnas.1617959114). ***PNAS***, 2017 |
31 | 31 |
|
32 |
+ |
|
33 |
+[Horses in Denmark Are a Reservoir of Diverse Clones of Methicillin-Resistant and -Susceptible Staphylococcus aureus](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5376617/). |
|
34 |
+***Frontiers in Microbiology***, 2017, 8:543 |
|
35 |
+ |
|
36 |
+ |
|
32 | 37 |
[Gut metagenomes of type 2 diabetic patients have characteristic single-nucleotide polymorphism distribution in *Bacteroides coprocola*](https://microbiomejournal.biomedcentral.com/articles/10.1186/s40168-017-0232-3). ***Microbiome***, 2017, 5:15 |
33 | 38 |
|
34 | 39 |
|
35 | 40 |
## <i class="fa fa-calendar"></i> 2016 |
36 | 41 |
|
37 |
-[Function and Phylogeny of Bacterial Butyryl Coenzyme A:Acetate Transferases and Their Diversity in the Proximal Colon of Swine](http://aem.asm.org/content/82/22/6788.short). ***Applied and Environmental Microbiology***. 2016,82(22):6788-6798. |
|
42 |
+[Function and Phylogeny of Bacterial Butyryl Coenzyme A:Acetate Transferases and Their Diversity in the Proximal Colon of Swine](http://aem.asm.org/content/82/22/6788.short). |
|
43 |
+***Applied and Environmental Microbiology***. 2016, 82(22):6788-6798. |
|
38 | 44 |
|
39 | 45 |
|
... | ... |
@@ -18,6 +18,12 @@ html_preview: false |
18 | 18 |
|
19 | 19 |
## <i class="fa fa-mortar-board"></i> Journal Articles |
20 | 20 |
|
21 |
++ <http://dx.doi.org/10.3389/fmicb.2017.00543> |
|
22 |
+ |
|
23 |
+ |
|
24 |
+ |
|
25 |
+---- |
|
26 |
+ |
|
21 | 27 |
+ <http://dx.doi.org/10.1186/s40168-017-0232-3> |
22 | 28 |
|
23 | 29 |
 |
... | ... |
@@ -51,7 +51,8 @@ Please cite the following article when using `ggtree`: |
51 | 51 |
`r badge_doi("10.1111/2041-210X.12628", "blue")` |
52 | 52 |
`r badge_altmetric("10533079", "blue")` |
53 | 53 |
`r badge_citation("HtEfBTGE9r8C", "7268358477862164627", "blue")` |
54 |
-`r badge_sci_citation("http://apps.webofknowledge.com/InboundService.do?mode=FullRecord&customersID=RID&IsProductCode=Yes&product=WOS&Init=Yes&Func=Frame&DestFail=http%3A%2F%2Fwww.webofknowledge.com&action=retrieve&SrcApp=RID&SrcAuth=RID&SID=U2EMQLA1958R5PUSAKt&UT=WOS%3A000393305300004", "blue")` |
|
54 |
+ |
|
55 |
+ |
|
55 | 56 |
|
56 | 57 |
__G Yu__, DK Smith, H Zhu, Y Guan, TTY Lam<sup>\*</sup>. ggtree: an R package for visualization and annotation of phylogenetic trees with their covariates and other associated data. __*Methods in Ecology and Evolution*__. 2017, 8(1):28-36. |
57 | 58 |
|
... | ... |
@@ -6,7 +6,7 @@ author: "Guangchuang Yu and Tommy Tsan-Yuk Lam\\ |
6 | 6 |
date: "`r Sys.Date()`" |
7 | 7 |
bibliography: ggtree.bib |
8 | 8 |
csl: nature.csl |
9 |
-output: |
|
9 |
+output: |
|
10 | 10 |
prettydoc::html_pretty: |
11 | 11 |
toc: true |
12 | 12 |
theme: cayman |
... | ... |
@@ -52,7 +52,7 @@ This project arose from our needs to annotate nucleotide substitutions in the ph |
52 | 52 |
|
53 | 53 |
Previously, phylogenetic trees were much smaller. Annotation of phylogenetic trees was not as necessary as nowadays much more data is becomming available. We want to associate our experimental data, for instance antigenic change, with the evolution relationship. Visualizing these associations in a phylogenetic tree can help us to identify evolution patterns. We believe we need a next generation tree viewer that should be programmable and extensible. It can view a phylogenetic tree easily as we did with classical software and support adding annotation data in a layer above the tree. This is the objective of developing the `ggtree`. Common tasks of annotating a phylogenetic tree should be easy and complicated tasks can be possible to achieve by adding multiple layers of annotation. |
54 | 54 |
|
55 |
-The `ggtree` is designed by extending the `ggplot2`[@wickham_ggplot2_2009] package. It is based on the grammar of graphics and takes all the good parts of `ggplot2`. There are other R packages that implement tree viewer using `ggplot2`, including `OutbreakTools`, `phyloseq`[@mcmurdie_phyloseq_2013] and [ggphylo](https://github.com/gjuggler/ggphylo); they mostly create complex tree view functions for their specific needs. Internally, these packages interpret a phylogenetic as a collection of `lines`, which makes it hard to annotate diverse user input that are related to node (taxa). The `ggtree` is different to them by interpreting a tree as a collection of `taxa` and allowing general flexibilities of annotating phylogenetic tree with diverse types of user inputs. |
|
55 |
+The `ggtree` is designed by extending the `ggplot2`[@wickham_ggplot2_2009] package. It is based on the grammar of graphics and takes all the good parts of `ggplot2`. There are other R packages that implement tree viewer using `ggplot2`, including `OutbreakTools`, `phyloseq`[@mcmurdie_phyloseq_2013] and [ggphylo](https://github.com/gjuggler/ggphylo); they mostly create complex tree view functions for their specific needs. Internally, these packages interpret a phylogenetic as a collection of `lines`, which makes it hard to annotate diverse user input that are related to node (taxa). The `ggtree` is different to them by interpreting a tree as a collection of `taxa` and allowing general flexibilities of annotating phylogenetic tree with diverse types of user inputs. |
|
56 | 56 |
|
57 | 57 |
|
58 | 58 |
# Getting data into `R` |
... | ... |
@@ -84,7 +84,7 @@ Most of the phylogenetic trees are scaled by evolutionary distance (substitution |
84 | 84 |
The `ggtree` package provides several layers to annotate a phylogenetic tree, including: |
85 | 85 |
|
86 | 86 |
+ `geom_cladelabel` for labelling selected clades |
87 |
-+ `geom_hilight` for highlighting selected clades |
|
87 |
++ `geom_hilight` for highlighting selected clades |
|
88 | 88 |
+ `geom_range` to indicate uncertainty of branch lengths |
89 | 89 |
+ `geom_strip` for adding strip/bar to label associated taxa (with optional label) |
90 | 90 |
+ `geom_taxalink` for connecting related taxa |
... | ... |
@@ -107,7 +107,7 @@ Visualizing an annotated phylogenetic tree with numerical matrix (e.g. genotype |
107 | 107 |
+ [Tree Annotation](treeAnnotation.html) |
108 | 108 |
+ [Advance Tree Annotation](advanceTreeAnnotation.html) |
109 | 109 |
+ [ggtree utilities](ggtreeUtilities.html) |
110 |
- |
|
110 |
++ [Phylomoji](https://c |