Browse code

Pulled from origin (forked ggtree on github) and fixed differences.

Merge branch 'master' of https://github.com/JustGitting/ggtree

# Conflicts:
# R/geom_cladelabel.R
# R/tidytree.R

JustGitting authored on 29/06/2017 04:05:50
Showing 26 changed files

... ...
@@ -1,3 +1,4 @@
1
+
1 2
 Justin Silverman
2 3
 ----------------
3 4
 + `geom_balance`
... ...
@@ -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
         ##
... ...
@@ -350,7 +350,8 @@ is.tree <- function(x) {
350 350
                         "codeml",
351 351
                         "hyphy",
352 352
                         "beast",
353
-                        "phangorn")
353
+                        "phangorn",
354
+                        "treedata")
354 355
         ) {
355 356
         return(TRUE)
356 357
     }
... ...
@@ -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://img.shields.io/badge/release%20version-1.6.11-green.svg?style=flat)](https://bioconductor.org/packages/ggtree) [![](https://img.shields.io/badge/devel%20version-1.7.10-green.svg?style=flat)](https://github.com/guangchuangyu/ggtree) [![Bioc](http://www.bioconductor.org/shields/years-in-bioc/ggtree.svg)](https://www.bioconductor.org/packages/devel/bioc/html/ggtree.html#since) [![](https://img.shields.io/badge/download-14336/total-blue.svg?style=flat)](https://bioconductor.org/packages/stats/bioc/ggtree) [![](https://img.shields.io/badge/download-1385/month-blue.svg?style=flat)](https://bioconductor.org/packages/stats/bioc/ggtree)
7
+[![](https://img.shields.io/badge/release%20version-1.8.1-green.svg?style=flat)](https://bioconductor.org/packages/ggtree) [![](https://img.shields.io/badge/devel%20version-1.9.1-green.svg?style=flat)](https://github.com/guangchuangyu/ggtree) [![Bioc](http://www.bioconductor.org/shields/years-in-bioc/ggtree.svg)](https://www.bioconductor.org/packages/devel/bioc/html/ggtree.html#since) [![](https://img.shields.io/badge/download-16372/total-blue.svg?style=flat)](https://bioconductor.org/packages/stats/bioc/ggtree) [![](https://img.shields.io/badge/download-1117/month-blue.svg?style=flat)](https://bioconductor.org/packages/stats/bioc/ggtree)
8 8
 
9
-[![Project Status: Active - The project has reached a stable, usable state and is being actively developed.](http://www.repostatus.org/badges/latest/active.svg)](http://www.repostatus.org/#active) [![codecov](https://codecov.io/gh/GuangchuangYu/ggtree/branch/master/graph/badge.svg)](https://codecov.io/gh/GuangchuangYu/ggtree) [![Last-changedate](https://img.shields.io/badge/last%20change-2017--04--20-green.svg)](https://github.com/GuangchuangYu/ggtree/commits/master) [![GitHub forks](https://img.shields.io/github/forks/GuangchuangYu/ggtree.svg)](https://github.com/GuangchuangYu/ggtree/network) [![GitHub stars](https://img.shields.io/github/stars/GuangchuangYu/ggtree.svg)](https://github.com/GuangchuangYu/ggtree/stargazers) [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://awesome-r.com/#awesome-r-graphic-displays)
9
+[![Project Status: Active - The project has reached a stable, usable state and is being actively developed.](http://www.repostatus.org/badges/latest/active.svg)](http://www.repostatus.org/#active) [![codecov](https://codecov.io/gh/GuangchuangYu/ggtree/branch/master/graph/badge.svg)](https://codecov.io/gh/GuangchuangYu/ggtree) [![Last-changedate](https://img.shields.io/badge/last%20change-2017--06--19-green.svg)](https://github.com/GuangchuangYu/ggtree/commits/master) [![GitHub forks](https://img.shields.io/github/forks/GuangchuangYu/ggtree.svg)](https://github.com/GuangchuangYu/ggtree/network) [![GitHub stars](https://img.shields.io/github/stars/GuangchuangYu/ggtree.svg)](https://github.com/GuangchuangYu/ggtree/stargazers) [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://awesome-r.com/#awesome-r-graphic-displays)
10 10
 
11 11
 [![platform](http://www.bioconductor.org/shields/availability/devel/ggtree.svg)](https://www.bioconductor.org/packages/devel/bioc/html/ggtree.html#archives) [![Build Status](http://www.bioconductor.org/shields/build/devel/bioc/ggtree.svg)](https://bioconductor.org/checkResults/devel/bioc-LATEST/ggtree/) [![Linux/Mac Travis Build Status](https://img.shields.io/travis/GuangchuangYu/ggtree/master.svg?label=Mac%20OSX%20%26%20Linux)](https://travis-ci.org/GuangchuangYu/ggtree) [![AppVeyor Build Status](https://img.shields.io/appveyor/ci/Guangchuangyu/ggtree/master.svg?label=Windows)](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
-[![](https://img.shields.io/badge/doi-10.1111/2041--210X.12628-green.svg?style=flat)](http://dx.doi.org/10.1111/2041-210X.12628) [![](https://img.shields.io/badge/Altmetric-348-green.svg?style=flat)](https://www.altmetric.com/details/10533079)
30
+[![](https://img.shields.io/badge/doi-10.1111/2041--210X.12628-green.svg?style=flat)](http://dx.doi.org/10.1111/2041-210X.12628) [![](https://img.shields.io/badge/Altmetric-346-green.svg?style=flat)](https://www.altmetric.com/details/10533079)
31 31
 
32 32
 ------------------------------------------------------------------------
33 33
 
34 34
 ### Citation
35 35
 
36
-[![citation](https://img.shields.io/badge/cited%20by-15-green.svg?style=flat)](https://scholar.google.com.hk/scholar?oi=bibs&hl=en&cites=7268358477862164627) [![](https://img.shields.io/badge/cited%20in%20Web%20of%20Science%20Core%20Collection-6-green.svg?style=flat)](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
+[![citation](https://img.shields.io/badge/cited%20by-22-green.svg?style=flat)](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
-[![download](http://www.bioconductor.org/shields/downloads/ggtree.svg)](https://bioconductor.org/packages/stats/bioc/ggtree) [![](https://img.shields.io/badge/download-14336/total-blue.svg?style=flat)](https://bioconductor.org/packages/stats/bioc/ggtree) [![](https://img.shields.io/badge/download-1385/month-blue.svg?style=flat)](https://bioconductor.org/packages/stats/bioc/ggtree)
56
+[![download](http://www.bioconductor.org/shields/downloads/ggtree.svg)](https://bioconductor.org/packages/stats/bioc/ggtree) [![](https://img.shields.io/badge/download-16372/total-blue.svg?style=flat)](https://bioconductor.org/packages/stats/bioc/ggtree) [![](https://img.shields.io/badge/download-1117/month-blue.svg?style=flat)](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&amp;hl=en&amp;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&amp;customersID=RID&amp;IsProductCode=Yes&amp;product=WOS&amp;Init=Yes&amp;Func=Frame&amp;DestFail=http%3A%2F%2Fwww.webofknowledge.com&amp;action=retrieve&amp;SrcApp=RID&amp;SrcAuth=RID&amp;SID=U2EMQLA1958R5PUSAKt&amp;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&amp;hl=en&amp;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&amp;hl=en&amp;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&amp;hl=en&amp;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&amp;hl=en&amp;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&amp;customersID=RID&amp;IsProductCode=Yes&amp;product=WOS&amp;Init=Yes&amp;Func=Frame&amp;DestFail=http%3A%2F%2Fwww.webofknowledge.com&amp;action=retrieve&amp;SrcApp=RID&amp;SrcAuth=RID&amp;SID=U2EMQLA1958R5PUSAKt&amp;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&amp;hl=en&amp;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
-[![citation](https://img.shields.io/badge/cited%20by-15-blue.svg?style=flat)](https://scholar.google.com.hk/scholar?oi=bibs&hl=en&cites=7268358477862164627)
28
-[![](https://img.shields.io/badge/cited%20in%20Web%20of%20Science%20Core%20Collection-6-blue.svg?style=flat)](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
+[![citation](https://img.shields.io/badge/cited%20by-22-blue.svg?style=flat)](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
-[![citation](https://img.shields.io/badge/cited%20by-15-blue.svg?style=flat)](https://scholar.google.com.hk/scholar?oi=bibs&hl=en&cites=7268358477862164627)
24
+[![citation](https://img.shields.io/badge/cited%20by-22-blue.svg?style=flat)](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
+![](https://guangchuangyu.github.io/featured_img/ggtree/fmicb-08-00543-g0002.jpg)
33
+
34
+------------------------------------------------------------------------
35
+
30 36
 -   <http://dx.doi.org/10.1186/s40168-017-0232-3>
31 37
 
32 38
 ![](https://guangchuangyu.github.io/featured_img/ggtree/40168_2017_232_Fig2_HTML.gif)
... ...
@@ -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://img.shields.io/badge/release%20version-1.6.11-blue.svg?style=flat)](https://bioconductor.org/packages/ggtree)
31
-[![](https://img.shields.io/badge/devel%20version-1.7.10-blue.svg?style=flat)](https://github.com/guangchuangyu/ggtree)
32
-[![](https://img.shields.io/badge/download-14336/total-blue.svg?style=flat)](https://bioconductor.org/packages/stats/bioc/ggtree)
33
-[![](https://img.shields.io/badge/download-1385/month-blue.svg?style=flat)](https://bioconductor.org/packages/stats/bioc/ggtree)
30
+[![](https://img.shields.io/badge/release%20version-1.8.1-blue.svg?style=flat)](https://bioconductor.org/packages/ggtree)
31
+[![](https://img.shields.io/badge/devel%20version-1.9.1-blue.svg?style=flat)](https://github.com/guangchuangyu/ggtree)
32
+[![](https://img.shields.io/badge/download-16674/total-blue.svg?style=flat)](https://bioconductor.org/packages/stats/bioc/ggtree)
33
+[![](https://img.shields.io/badge/download-1117/month-blue.svg?style=flat)](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
 [![](https://img.shields.io/badge/doi-10.1111/2041--210X.12628-blue.svg?style=flat)](http://dx.doi.org/10.1111/2041-210X.12628)
63
-[![](https://img.shields.io/badge/Altmetric-348-blue.svg?style=flat)](https://www.altmetric.com/details/10533079)
64
-[![citation](https://img.shields.io/badge/cited%20by-15-blue.svg?style=flat)](https://scholar.google.com.hk/scholar?oi=bibs&hl=en&cites=7268358477862164627)
65
-[![](https://img.shields.io/badge/cited%20in%20Web%20of%20Science%20Core%20Collection-6-blue.svg?style=flat)](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://img.shields.io/badge/Altmetric-345-blue.svg?style=flat)](https://www.altmetric.com/details/10533079)
64
+[![citation](https://img.shields.io/badge/cited%20by-22-blue.svg?style=flat)](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
+![](https://guangchuangyu.github.io/featured_img/ggtree/fmicb-08-00543-g0002.jpg)
24
+
25
+----
26
+
21 27
 + <http://dx.doi.org/10.1186/s40168-017-0232-3>
22 28
 
23 29
 ![](https://guangchuangyu.github.io/featured_img/ggtree/40168_2017_232_Fig2_HTML.gif)
... ...
@@ -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