NEWS
ggtree 4.1.2
- make
gheatmap() robust to missing tree labels in data row names by warning and auto-filling missing rows with NA instead of stopping (2026-03-23, Mon)
- improve
gheatmap() input validation and custom column label remapping (2026-03-09, Mon)
- add native paired-tree/tanglegram support via
ggdoubletree(), fortify.tanglegram(), fortify.cophylo(), and geom_tanglelink(), including support for raw trees, ggtree objects, deterministic crossing minimization, and optimize_side = "right"|"left"|"both" regression tests (2026-03-09, Mon)
- add a deterministic
tree_and_leaf layout inspired by the TreeAndLeaf package, with native ggtree() integration and regression tests (2026-03-09, Mon)
- add a
height parameter to collapse() supporting NULL, ggplot2::rel(), and absolute numeric heights for collapsed triangles, while restoring the original layout correctly on expand() (2026-03-09, Mon, #409)
- optimize the
daylight layout by caching subtree topology and removing repeated tidyverse reshaping while preserving the existing geometry; add regression tests for cached and uncached paths (2026-03-09, Mon)
- fix custom layout handling in
ggtree() when layout functions return an xy component (2026-03-09, Mon)
- make
geom_hilight() and geom_cladelabel() more compatible with recent ggplot2 changes, and strengthen regression tests (2026-03-09, Mon)
- modernize roxygen documentation using markdown syntax (2026-01-12, Mon)
- add 'data' argument to
geom_rootedge() (2026-01-10, Sat, #696, #697)
- more options in
ggtree_set_interactive() (2025-12-19, Fri)
- update
default_aes to work with from_theme
geom_highlight and geom_taxalink (2025-12-18, Thu, #694)
- fix issue of
geom_taxalink by adding 'outward' argument (2025-12-18, Thu, #692)
print() method for 'ggtree' object (2025-12-17, Wed)
ggtree_set_interactive() and ggtree_unset_interactive() to set and unset interactive mode (2025-12-17, Wed)
- if interactive mode is set and there are no interactive attributes, it will throw a warning message, which can be disabled if
ggtree_set_interactive(check=FALSE)
ggtree 4.1.1
- bug fixed in
geom_striplab (2025-10-30, Thu, #677)
ggtree 4.0.0
- Bioconductor RELEASE_3_22 (2025-10-30, Thu)
ggtree 3.99.2
- update
gheatmap, geom_range and msaplot to be compatible with ggplot2 v=4.0.0 (2025-10-16, Thu, #668, #672, #674)
- interactive ggtree (2025-09-16, #662)
- Added support for XStringSet in msaplot (2025-07-13, Sun, #631)
ggtree 3.17.1
- consistent with ggplot2 v=4.0.0 (2025-07-12, Sat, #657)
ggtree 3.16.0
- Bioconductor RELEASE_3_21 (2025-04-17, Thu)
ggtree 3.14.0
- Bioconductor RELEASE_3_20 (2024-10-30, Wed)
ggtree 3.13.2
- mv
td_filter(), td_unnest() and td_mutate() to 'ggfun' package (2024-10-24, Thu)
ggtree 3.13.1
- layout argument can be a function to re-calculate the coord of nodes (2024-07-27, Sat, #622)
layout.params = list(as.graph=TRUE) (by default) for converting the tree to a graph tree (igraph object), so that graph layout can be directly applied to visualize a tree
- otherwise, the function can assume the input tree as a
phylo or treedata object
- use
yulab.utils::yulab_msg() for startup message (2024-07-26, Fri)
- mv
%<+% operator to 'ggfun' (2024-05-28, Tue)
ggtree 3.12.0
- Bioconductor RELEASE_3_19 (2024-05-14, Tue)
ggtree 3.11.2
- expose 'position' parameter for
geom_range() (2024-04-07, Sun, #611)
ggtree 3.11.1
- copy
rect_to_poly() from ggplot2 to make it compatible with ggplot2 3.5.0 (2024-02-13, Tue)
ggtree 3.10.0
- Bioconductor RELEASE_3_18 (2023-10-25, Wed)
ggtree 3.9.1
- use
rlang::check_installed() to check whether the suggested pkg is installed (2023-08-11, Fri, #580)
- allows using
linewidth parameter (synonyms for size) in ggtree() (2023-07-15, Sat, #574)
- bug fixed in setting
branch.length = "none" to plot 'hclust' object (2023-07-15, Sat, #574)
ggtree 3.8.0
- Bioconductor RELEASE_3_17 (2023-05-03, Wed)
ggtree 3.7.2
ggtree() supports 'dendro' object (ggdendro::dendro_data() output) (2023-03-02, Thu)
- update
theme_dendrogram() to use ggfun::theme_noxaxis() (2022-11-21, Mon)
- using
cli::cli_alert_warning() instead of warning_wrap (2022-11-10, Thu)
ggtree 3.7.1
- compatible with ggplot2 v=3.4.0 (2022-11-07, Mon)
- allows setting
options(clade_align = TRUE) to align geom_hilight() layer and allows setting options(clade_width_extend = 0.35) to set the amount the width extension (in y-axis) of geom_hilight(). These two features are designed for ggtreeDendro::geom_rect_subtree() layer (2022-11-06, Sun)
ggtree 3.6.0
- Bioconductor RELEASE_3_16 (2022-11-02, Wed)
ggtree 3.5.3
- add new citation (the iMeta 2022 paper) (2022-09-26, Mon)
- move
scale_color_subtree() to the 'ggtreeDendro' package (2022-09-23, Fri)
- update
fortify method for pvclust object (2022-08-15, Mon)
- add citation of the tree data book (2022-08-13, Sat)
ggtree 3.5.2
scale_color_subtree() now supports passing a numeric value and internally it will call cutree(tree, k) (2022-08-11, Thu)
- support 'linkage' class defined in the 'mdendro' package (2022-08-11, Thu)
- clone the plot environment before assigning layout (2022-07-19, Tue, #516)
- bug fixed in 'equal_angle' layout (2022-07-08, Fri, #514)
- optimize
geom_tiplab to be better compatible with dendrogram layout (2022-06-23, Thu, #508)
ggtree 3.5.1
as.phylo.hclust2 to correct edge length as displayed in stats:::plot.hclust (2022-06-21, Tue)
- add outline to nodepies (2022-06-20, Mon, #506)
- new 'slanted' layout for
branch.length = 'none' (2022-04-29, Fri, #497)
- only works for Cartesian coordination, that means it will not work for
layout = 'radial'
ggtree 3.4.0
- Bioconductor 3.15 release (2022-04-28, Thu)
ggtree 3.3.3
geom_striplab() that supports aes() mapping (2022-04-22, Fri, #493)
to.bottom parameter introduced in geom_hilight() to allow the highlight layer was added into the lowest layer stack (2022-04-22, Fri, #492)
ggtree 3.3.2
- mv
identify() method to 'ggfun' (2022-04-01, Fri)
- update
identify.gg() to support 'ggplot' object and +xlim()
- update man files (2022-03-23, Wed, #489)
ggtree 3.3.1
- use graph layouts to visualize tree (2021-12-10, Fri, #460, #461)
scale_color_subtree and scale_colour_subtree to color subtree via taxa group information (e.g., cutree, or kmeans) (2021-12-01, Wed)
- set
na.value = 'white' in msaplot() (2021-10-29, Fri)
ggtree 3.2.0
- Bioconductor 3.14 release
ggtree 3.1.6
geom_cladelab now supports extend parameter as in geom_cladelabel (2021-10-14, Thu, @xiangpin, #446)
geom_hilight supports fill linear gradient colour and round rect background (2021-10-11, Mon; @xiangpin, #449, #444)
- work with negative edge lengths (
hclust may generate negative tree heights) (2021-09-29, Wed; @xiangpin, #441, #445)
ggtree 3.1.5
ggdensitree with align.tips=TRUE sets max x to 0 (2021-09-26, Sun; @brj1, #437, #439)
- custom column headers for
gheatmap (2021-09-15, Wed, @matt-sd-watson, #434)
- bug fixed of
nudge_x parameter in geom_segment2 (2021-09-03, Fri; @xiangpin, #433)
ggtree 3.1.4
- introduce
align parameter in geom_hilight (2021-08-30, Mon; @xiangpin, #431)
- the
data parameter in geom_facet now accepts function as input (2021-08-22, Sun; @xiangpin, #430)
- import
ggfun and yulab.utils (2021-08-20, Fri)
- allow using
options(layout.radial.linetype) to set linetype of radial layout (either 'straight' or 'curved') (2021-08-13, Fri; @xiangpin, #427)
ggtree 3.1.3
data argument in geom_tiplab and position argument in geom_tree (2021-08-10, Tue; #426, @xiangpin)
geom_hilight and geom_cladelab support function as input data (2021-07-28, Wed; #421, @xiangpin)
td_mutate for mutating tree data
geom_tiplab supports fontface aesthetic (2021-07-06, Tue; @xiangpin)
ggtree 3.1.2
- calculate branch mid point for unrooted layout tree (2021-06-11, Fri)
geom_range supports aes mapping (2021-06-04, Fri)
ggtree 3.1.1
- bug fixed in
geom_range (2021-06-01, Tue)
- now
geom_nodelab has a node="internal" parameter. (2021-05-31, Mon)
- if
node = "external", it is equivalent to `geom_tiplab
- if
node = "all", it is equivalent to list(geom_tiplab(), geom_nodelab())
ggtree 3.0.0
- Bioconductor 3.13 release
ggtree 2.5.3
- optimize text angle in
geom_cladelab (2021-05-10, Mon)
ggtree 2.5.2
- extend 'continuous' parameter to support 4 possible values, i.e., 'none' to disable continuous transition, 'color' (or 'colour') to enable continuous color transition, 'size' to enable continuous size (branch thickness) transition and 'all' to enable continuous color and size transition (2021-04-07, Wed)
extendto argument for geom_hilight is now compatible with 'inward_circular' and 'dendrogram' layouts (2021-02-25, Thu)
ggtree 2.5.1
- update man file of
geom_rootpoint (2021-01-08, Fri)
label and offset.label introduced in geom_treescale layer (2020-12-23, Wed)
geom_rootedge supports reversed x (2020-12-17, Thu)
geom_nodelab() now supports circular layout (2020-11-26, Thu)
- branch size can be gradually changed (2020-10-29, Thu)
ggtree 2.4.0
- Bioconductor 3.12 release (2020-10-28, Wed)
ggtree 2.3.7
- add
label_pad() function to add padding characters to taxa labels (2020-10-09, Fri)
- add
family parameter to geom_tiplab()
ggtree 2.3.6
- new layouts,
roundrect and ellipse
fortify() method for treedataList object (2020-09-20, Sun)
vexpand() and ggexpand() to expand plot limit by ratio of plot range (2020-09-18, Fri)
geom_cladelab(), an updated version of geom_cladelabel that supports aes mapping (2020-09-17, Thu)
ggtree 2.3.5
td_unnest() which returns a function to flatten ggtree plot data (2020-09-14, Mon)
- update
geom_hilight to support geom_hilight(data = mydata, node = selected_node) (2020-09-03, Thu)
- Defunct
geom_nodelab2() (2020-09-02, Wed)
geom_tiplab() and geom_nodelab() support geom = "shadowtext"
td_filter() which returns a function to subset ggtree plot data in geom layers (2020-08-29, Sat)
- update man files of
geom_rootedge and geom_point2
- update
geom_hilight to support geom_hilight(data = tbl_tree, node = selected_node). (2020-09-03, Thu)
ggtree 2.3.4
zoomClade and geom_zoom_clade to zoom in selected clade (2020-08-04, Tue)
- these two functions are wrapper function of
ggforce::facet_zoom
- update
facet_labeller according to the change of ggplot2 (2020-07-28, Tue)
- defunct
set_hilight_legend as now geom_hilight supports aesthetic mapping and can generate legend automotically
- remove
annotation_image, phylopic and subview as they were defunct for quite a long time. Users should refer to the ggimage package if they want to annotate tree with image or subplots.
as_ylab parameter added in geom_tiplab(), which supports displaying tip labels as y-axis label and only works for rectangular and dendrogram layouts
hexpand to expand x limits by ratio of x range and supports both direction (1 for rhs and -1 for lhs) (2020-07-27, Mon)
ggtree 2.3.3
- add
type parameter in geom_hilight, default is auto, optional rect
to rectangular layer, encircle to encircle layer and comment original
geom_hilight, and support subset in aesthetic. (2020-07-23, Thu)
- update
geom_hilight to support aesthetic mapping (2020-07-22, Wed)
- update
geom_taxalink to support aesthetic mapping (2020-07-20, Mon)
layout_inward_circular for layout_circular() + scale_x_reverse() (2020-07-16, Thu)
ggtree 2.3.2
- update
geom_taxalink to support circular layout tree (2020-07-13, Mon).
ggtree 2.3.1
fortify method for pvclust object (2020-06-21, Mon)
- add dot parameters for color or size of
geom_hilight and more detail messages of
warnings for extendto. (2020-06-16, Tue)
- modified the angle of clade labels. Added horizontal parameter to control
whether set clade labels to horizontal. When the parameter was set to
FALSE,
it will be useful for the layouts in coord_polar, such as circular, fan,
radial. To better view the clade labels, their angles has been adjusted. (2020-06-15, Mon)
- bug fixed in
getYcoord_scale_category (2020-05-13, Wed)
ggtree 2.2.0
- Bioconductor 3.11 release
ggtree 2.1.6
- Now
geom_tiplab() works with unrooted layouts (ape, equal_angle and daylight) (2020-04-23, Thu)
- bug fixed of
layoutEqualAngle (2020-04-09, Thu)
- in tibble v=3.0.0, df$x = NA will store df$x as lgl variable and assign numeric value to df$x will throw error. Now change to df$x = 0 in
layoutEqualAngle.
ggtree 2.1.5
- bug fixed of calculating inset width and height
ggtree 2.1.4
ggtree 2.1.3
- move
xlim2 and ylim2 to aplot package (2020-03-30, Mon)
- remove
mutate_ as it was deprecated in dplyr (2020-03-25, Wed)
- fixed mutate bug caused by new version of dplyr and tidytree in daylight layout (2020-03-16, Mon)
ggtree 2.1.2
expand_scale was deprecated in ggplot2 v=3.3.0, import expansion instead (2020-03-12, Thu)
- bug fixed of determined layout for
ggplot(tree) + geom_tiplab() (2020-01-26, Sun)
- set unrooted layout to use
coord_fixed by default (2020-01-25, Sat)
- if
layout = "ape", use ape unrooted layout
ggtree 2.1.1
- export
geom_highlight as an alias of geom_hilight (2020-01-08, Wed)
- set
clip="off" for all layouts (2019-12-06, Fri)
- not passing
fontface if geom is image or phylopic in geom_tiplab and geom_nodelab (2019-11-29, Fri)
- import and re-export
guide_legend, scale_colour_manual, scale_color_manual, scale_fill_manual and margin from ggplot2
offspring method for ggtree object (2019-11-21, Thu)
- fixed
revts to work with collapse (2019-11-18, Mon)
- convert roxygen documents using markdown (2019-11-01, Fri)
- extend
xlim2 and ylim2 to support discrete scale.
xlim2 and ylim2 to uniformize axis limits of ggplot objects (2019-10-31, Thu)
- fixed
fontface warning message when align=TRUE in geom_tiplab (2019-10-30, Wed)
ggtree 2.0.0
- Bioconductor 3.10 release (2019-10-30, Wed)
ggtree 1.99.1
- bug fixed of
geom_hilight for tree$edge.length = NULL (2019-10-16, Wed)
fortify method for igraph (only work with tree graph) (2019-09-28, Sat)
ggdensitree (2019-09-11, Wed)
ggtree 1.99.0
- prepare for ggtree v=2.0.0
ggtree 1.17.5
fortify methods for hierarchical clustering objects, including agnes, diana and twins (2019-08-30, Fri)
- now
geom_hilight supports unrooted and daylight layouts (2019-08-28, Wed)
- by calling
geom_hilight_encircle
- update
geom_motif according to the change of gggenes and allow labeling genes (2019-08-27, Tue)
- re-implement
geom_strip with more robust support of labelling strip, either input taxa using name or id.
- support
phylog defined in ade4 package (2019-08-14, Wed)
ggtree 1.17.4
- now
geom_cladelabel supports unrooted and daylight layouts (2019-08-14, Wed)
- by integrating
geom_cladelabel2
- defined
nodelab method for ggtree to convert node number to label (2019-08-09, Fir)
- redefined
nodeid as S3 generic in tidytree v=0.2.6
- change the original function as a method for ggtree
- move the
nodeid function for tree object to treeio
- defunct
gzoom function
- introduce
rootnode parameter in geom_tree with default = TRUE and behave as previous version (2019-08-08, Thu)
- the invisible root to itself line segment have advantage for the number of line segments is consistent with the number of nodes.
- if
rootnode = FALSE, there will be no line segment of root to itself.
- extend
gheatmap to support collapsed node (2019-08-06, Tue)
- support
hclust and dendrogram (2019-07-31, Wed)
ggtree 1.17.3
- remove re-export treeio parser function, users now need to load treeio explictly (2019-07-24, Wed)
- export
layout_circular, layout_fan and layout_rectangular
layout_dendrogram and theme_dendrogram
scale_x_range for adding second x-axis for geom_range (2019-07-23, Tue)
- change
branch.length parameter to center for geom_range
ggtree 1.17.2
- extend
expand according to the change of collapse (2019-07-11, Thu)
mode parameter in collapse
geom_tiplab now works with 'circular' and 'fan' layouts (2019-07-05, Fri)
geom_inset for adding subplots to specific nodes (see also the inset function introduced in v=1.3.8)
ggtree 1.17.1
facet_data to extract data used in facet_plot or geom_facet (2019-07-02, Tue)
continuous parameter in geom_tree to continuous color edge from parent to child (2019-09-25, Tue)
root.position parameter for fortify and ggtree (2019-05-27, Mon)
geom_facet, a geom layer version of facet_plot (2019-05-23, Thu)
- update
scale_x_ggtree, now users can use gheatmap() + scale_x_ggtree() (2019-05-22, Wed)
- extend
xlim_expand to work with ggplot2 (2019-05-20, Tue)
- add
legend_title variable in gheatmap (2019-05-16, Thu)
ggtree 1.16.0
ggtree 1.15.6
- compatible with range is NULL in
geom_range (2019-04-27, Sat)
- remove
getChild, getChild.df, getParent, getParent.df, getSibling, getAncestor and getAncestor.df,
instead use child, parent, sibling and ancestor methods implemented in tidytree and treeio (2019-01-30, Wed)
- remove
get.offspring.df and get.offspring.tip and instead use tidytree::offspring (2019-01-28, Mon)
facet_widths function to set relative widths of facet panels (2019-01-28, Mon)
- the output is
ggplotify::as.ggplot(grid_object), so it is not the original ggtree object.
ggtree 1.15.5
- bug fixed of
theme_tree2 (2019-01-14, Mon)
- mv
rescale_tree to treeio (2019-01-11, Fri)
ggtree 1.15.4
- reimplement
MRCA as a method inherited from tidytree (2019-01-10, Thu)
- mv vignettes to treedata-book
ggtree 1.15.3
- move
reroot method to treeio package and rename to root (2018-12-28, Fri)
- bug fixed for setting
branch.length="none" in unrooted layouts (2018-12-26, Wed)
ggtree 1.15.2
- compatible with
tibble v=2.0.0 (2018-11-29, Thu)
ggtree 1.15.1
- now
revts also reverse the branch column (2018-11-11, Sun)
- better msg when taxa name not consistent in sequence and tree files with
msaplot. (2018-11-07, Wed)
ggtree 1.14.0
ggtree 1.13.6
- set
scale_y_continuous(expand = c(0, 0)) for gheatmap when colnames = FALSE (2018-10-17, Wed)
- made data usable with treedata in 'equal_angle' and 'daylight' layouts (2018-10-11, Thu)
ggtree 1.13.5
- enable additional parameters passed to
geom_rootedge (2018-09-13, Thu)
facet_labeller to label panels of facet_plot output (2018-09-10, Mon)
ggtree 1.13.3
- update
viewClade according to the change of ggplot2 (2018-08-07, Tue)
ggtree 1.13.2
- xmax_adjust in
viewClade (2018-07-21, Sat)
- update rd of
facet_plot by adding description and example (2018-07-19, Thu)
- order by y in
facet_plot (2018-07-09, Mon)
extend parameter in geom_cladelabel and geom_strip supports specifying
extension of both sides (2018-07-06, Fri)
geom_nodelab2 for circular layout (2018-07-03, Tue)
- re-export
ggplot2::fortify
ggtree 1.13.1
geom_nodepoint & geom_tippoint now compatible with ggplot2 v 2.2.1 &
3.0.0 (2018-06-26, Tue)
geom_rootedge (2018-06-13, Wed)
clade_name parameter added in collapse (2018-05-28, Mon)
- bug fixed of
gheatmap for rowname subsetting is partial match in R
(2018-05-23, Wed)
- compatible with ggplot2 2.2.1.9000 for
geom_text2(parse="emoji")
- typo on vignettes (2018-05-08, Tue)
- compatible with ggplot2 2.2.1.9000 (2018-05-02, Wed)
- incorporate newly introduce parameter
linejoin and arrow.fill in geom_segment
ggtree 1.12.0
- Bioconductor 3.7 release (2018-05-01, Tue)
ggtree 1.11.6
- reexport
treeio::read.iqtree & treeio::read.astral(2018-04-17, Tue)
- now geom_treescale will plot the text that can always be separated from
the bar (2018-03-07, Wed)
- optimize daylight layout
- geom_tiplab2 works with mapping = aes(subset) defined by users (2018-02-24, Sta)
- fixed overlapping branch after
flip
ggtree 1.11.5
- support passing
aes(subset) in geom_tippoint (2018-01-30, Tue)
- support passing
aes(subset) in geom_nodepoint (2018-01-26, Fri)
- fine tune y position after flip; flip compatible with collapse
ggtree 1.11.4
- re-implement collapse as collapse.ggtree method by importing dplyr::collapse
generic to prevent function name collision (2018-01-03, Wed)
- update treeVisualization vignette, with more layout examples added (2017-12-22, Fri)
- update vignette (2017-12-21, Thu)
- remove ggtreeUtilities.Rmd
- merge treeAnnotation and advanceTreeAnnotation