The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Publication-Ready Output

Color-Blind Friendly Palettes

Rclade defaults to the viridis palette, which is: - Color-blind friendly - Grayscale friendly - Perceptually uniform

library(Rclade)
data(example_tree)

# Default viridis palette
p <- plot_timetree(example_tree, rank = "phylum",
                   taxonomy_format = "GTDB",
                   add_timescale = FALSE)
#> 
#> ============================================================
#>            Rclade: Phylogenetic Tree Visualization
#> ============================================================
#> 2026-09-16T00:09:24.864+08:00 | INFO     | Starting plot_timetree pipeline
#> 2026-09-16T00:09:24.864+08:00 | INFO     | Tree input               : phylo object
#> 2026-09-16T00:09:24.864+08:00 | INFO     | Rank                     : phylum
#> 2026-09-16T00:09:24.864+08:00 | INFO     | Layout                   : rectangular
#> 2026-09-16T00:09:24.864+08:00 | INFO     | Unit                     : auto
#> 2026-09-16T00:09:24.865+08:00 | INFO     | Step 1/7: Input validation and reading
#> 
#>   --------------------------------------------------
#>   >> Input Validation
#>   --------------------------------------------------
#> 2026-09-16T00:09:24.865+08:00 | INFO     | Tips                     : 50
#> 2026-09-16T00:09:24.865+08:00 | INFO     | Internal nodes           : 49
#> 2026-09-16T00:09:24.865+08:00 | INFO     | Edge lengths range       : 40.1579 to 2758.4006
#> 2026-09-16T00:09:24.866+08:00 | INFO     | Input validation passed
#> 2026-09-16T00:09:24.866+08:00 | INFO     | Timer 'input_reading': 1 ms
#> 2026-09-16T00:09:24.866+08:00 | INFO     | Step 2/7: Taxonomy parsing
#> 2026-09-16T00:09:24.866+08:00 | INFO     | Using rank-based taxonomy: phylum
#> 2026-09-16T00:09:24.940+08:00 | INFO     | Detected format          : GTDB
#> 2026-09-16T00:09:24.941+08:00 | INFO     | Groups found             : 5
#> 2026-09-16T00:09:24.941+08:00 | INFO     | Timer 'taxonomy_parsing': 75 ms
#> 2026-09-16T00:09:24.941+08:00 | INFO     | Step 3/7: MRCA computation and monophyly check
#> 2026-09-16T00:09:24.941+08:00 | INFO     | Checking monophyly and computing MRCA for each group...
#> 2026-09-16T00:09:24.943+08:00 | INFO     | Valid groups for collapse: 5 out of 5 total groups
#> 2026-09-16T00:09:24.943+08:00 | INFO     | Valid MRCA nodes         : 5
#> 2026-09-16T00:09:24.943+08:00 | INFO     | Timer 'mrca_computation': 2 ms
#> 2026-09-16T00:09:25.220+08:00 | INFO     | Step 4/7: Color generation
#> 2026-09-16T00:09:25.277+08:00 | INFO     | Color palette            : viridis
#> 2026-09-16T00:09:25.277+08:00 | INFO     | Step 5/7: Tree rendering
#> ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
#> ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
#> 2026-09-16T00:09:25.363+08:00 | INFO     | Collapsing 5 clades...
#> 2026-09-16T00:09:25.379+08:00 | INFO     | Clade collapse complete
#> 2026-09-16T00:09:25.380+08:00 | INFO     | Timer 'tree_rendering': 102 ms
#> 2026-09-16T00:09:25.380+08:00 | INFO     | Step 6/7: Timescale integration
#> 
#> ============================================================
#>                       Pipeline Complete
#> ============================================================
#> 2026-09-16T00:09:25.527+08:00 | INFO     |   Tips                        : 50
#> 2026-09-16T00:09:25.527+08:00 | INFO     |   Groups parsed               : 5
#> 2026-09-16T00:09:25.527+08:00 | INFO     |   Groups collapsed            : 5
#> 2026-09-16T00:09:25.527+08:00 | INFO     |   Singleton groups            : 0
#> 2026-09-16T00:09:25.527+08:00 | INFO     |   Skipped (non-monophyletic)  : 0
#> 2026-09-16T00:09:25.527+08:00 | INFO     |   Skipped (root/zero-tip)     : 0
#> 2026-09-16T00:09:25.527+08:00 | INFO     |   Taxonomy format             : GTDB
#> 2026-09-16T00:09:25.527+08:00 | INFO     |   Layout                      : rectangular
#> 2026-09-16T00:09:25.528+08:00 | INFO     |   Timescale                   : disabled
#> 2026-09-16T00:09:25.528+08:00 | INFO     | plot_timetree completed successfully
print(p)

Custom Color Mapping

# Custom color mapping for specific groups
p <- plot_timetree(example_tree, rank = "phylum",
                   taxonomy_format = "GTDB",
                   add_timescale = FALSE,
                   color_mapping = c("Proteobacteria" = "#E41A1C",
                                     "Firmicutes" = "#377EB8"))
#> 
#> ============================================================
#>            Rclade: Phylogenetic Tree Visualization
#> ============================================================
#> 2026-09-16T00:09:25.809+08:00 | INFO     | Starting plot_timetree pipeline
#> 2026-09-16T00:09:25.809+08:00 | INFO     | Tree input               : phylo object
#> 2026-09-16T00:09:25.809+08:00 | INFO     | Rank                     : phylum
#> 2026-09-16T00:09:25.810+08:00 | INFO     | Layout                   : rectangular
#> 2026-09-16T00:09:25.810+08:00 | INFO     | Unit                     : auto
#> 2026-09-16T00:09:25.810+08:00 | INFO     | Step 1/7: Input validation and reading
#> 
#>   --------------------------------------------------
#>   >> Input Validation
#>   --------------------------------------------------
#> 2026-09-16T00:09:25.810+08:00 | INFO     | Tips                     : 50
#> 2026-09-16T00:09:25.810+08:00 | INFO     | Internal nodes           : 49
#> 2026-09-16T00:09:25.810+08:00 | INFO     | Edge lengths range       : 40.1579 to 2758.4006
#> 2026-09-16T00:09:25.811+08:00 | INFO     | Input validation passed
#> 2026-09-16T00:09:25.811+08:00 | INFO     | Timer 'input_reading': 1 ms
#> 2026-09-16T00:09:25.812+08:00 | INFO     | Step 2/7: Taxonomy parsing
#> 2026-09-16T00:09:25.812+08:00 | INFO     | Using rank-based taxonomy: phylum
#> 2026-09-16T00:09:25.819+08:00 | INFO     | Detected format          : GTDB
#> 2026-09-16T00:09:25.819+08:00 | INFO     | Groups found             : 5
#> 2026-09-16T00:09:25.820+08:00 | INFO     | Timer 'taxonomy_parsing': 8 ms
#> 2026-09-16T00:09:25.820+08:00 | INFO     | Step 3/7: MRCA computation and monophyly check
#> 2026-09-16T00:09:25.820+08:00 | INFO     | Checking monophyly and computing MRCA for each group...
#> 2026-09-16T00:09:25.821+08:00 | INFO     | Valid groups for collapse: 5 out of 5 total groups
#> 2026-09-16T00:09:25.821+08:00 | INFO     | Valid MRCA nodes         : 5
#> 2026-09-16T00:09:25.821+08:00 | INFO     | Timer 'mrca_computation': 1 ms
#> 2026-09-16T00:09:25.821+08:00 | INFO     | Step 4/7: Color generation
#> 2026-09-16T00:09:25.842+08:00 | INFO     | Color palette            : viridis
#> 2026-09-16T00:09:25.842+08:00 | INFO     | Step 5/7: Tree rendering
#> ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
#> ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
#> 2026-09-16T00:09:25.884+08:00 | INFO     | Collapsing 5 clades...
#> 2026-09-16T00:09:25.896+08:00 | INFO     | Clade collapse complete
#> 2026-09-16T00:09:25.896+08:00 | INFO     | Timer 'tree_rendering': 54 ms
#> 2026-09-16T00:09:25.896+08:00 | INFO     | Step 6/7: Timescale integration
#> 
#> ============================================================
#>                       Pipeline Complete
#> ============================================================
#> 2026-09-16T00:09:25.925+08:00 | INFO     |   Tips                        : 50
#> 2026-09-16T00:09:25.925+08:00 | INFO     |   Groups parsed               : 5
#> 2026-09-16T00:09:25.926+08:00 | INFO     |   Groups collapsed            : 5
#> 2026-09-16T00:09:25.926+08:00 | INFO     |   Singleton groups            : 0
#> 2026-09-16T00:09:25.926+08:00 | INFO     |   Skipped (non-monophyletic)  : 0
#> 2026-09-16T00:09:25.926+08:00 | INFO     |   Skipped (root/zero-tip)     : 0
#> 2026-09-16T00:09:25.926+08:00 | INFO     |   Taxonomy format             : GTDB
#> 2026-09-16T00:09:25.926+08:00 | INFO     |   Layout                      : rectangular
#> 2026-09-16T00:09:25.926+08:00 | INFO     |   Timescale                   : disabled
#> 2026-09-16T00:09:25.926+08:00 | INFO     | plot_timetree completed successfully
print(p)

Legend Placement

# Inside the plot (default)
p <- plot_timetree(example_tree, rank = "phylum",
                   taxonomy_format = "GTDB",
                   add_timescale = FALSE,
                   legend_position = c(0.05, 0.85))
#> 
#> ============================================================
#>            Rclade: Phylogenetic Tree Visualization
#> ============================================================
#> 2026-09-16T00:09:26.154+08:00 | INFO     | Starting plot_timetree pipeline
#> 2026-09-16T00:09:26.154+08:00 | INFO     | Tree input               : phylo object
#> 2026-09-16T00:09:26.155+08:00 | INFO     | Rank                     : phylum
#> 2026-09-16T00:09:26.155+08:00 | INFO     | Layout                   : rectangular
#> 2026-09-16T00:09:26.155+08:00 | INFO     | Unit                     : auto
#> 2026-09-16T00:09:26.155+08:00 | INFO     | Step 1/7: Input validation and reading
#> 
#>   --------------------------------------------------
#>   >> Input Validation
#>   --------------------------------------------------
#> 2026-09-16T00:09:26.155+08:00 | INFO     | Tips                     : 50
#> 2026-09-16T00:09:26.155+08:00 | INFO     | Internal nodes           : 49
#> 2026-09-16T00:09:26.155+08:00 | INFO     | Edge lengths range       : 40.1579 to 2758.4006
#> 2026-09-16T00:09:26.156+08:00 | INFO     | Input validation passed
#> 2026-09-16T00:09:26.156+08:00 | INFO     | Timer 'input_reading': 1 ms
#> 2026-09-16T00:09:26.156+08:00 | INFO     | Step 2/7: Taxonomy parsing
#> 2026-09-16T00:09:26.156+08:00 | INFO     | Using rank-based taxonomy: phylum
#> 2026-09-16T00:09:26.160+08:00 | INFO     | Detected format          : GTDB
#> 2026-09-16T00:09:26.160+08:00 | INFO     | Groups found             : 5
#> 2026-09-16T00:09:26.160+08:00 | INFO     | Timer 'taxonomy_parsing': 4 ms
#> 2026-09-16T00:09:26.160+08:00 | INFO     | Step 3/7: MRCA computation and monophyly check
#> 2026-09-16T00:09:26.160+08:00 | INFO     | Checking monophyly and computing MRCA for each group...
#> 2026-09-16T00:09:26.161+08:00 | INFO     | Valid groups for collapse: 5 out of 5 total groups
#> 2026-09-16T00:09:26.161+08:00 | INFO     | Valid MRCA nodes         : 5
#> 2026-09-16T00:09:26.161+08:00 | INFO     | Timer 'mrca_computation': 1 ms
#> 2026-09-16T00:09:26.161+08:00 | INFO     | Step 4/7: Color generation
#> 2026-09-16T00:09:26.162+08:00 | INFO     | Color palette            : viridis
#> 2026-09-16T00:09:26.162+08:00 | INFO     | Step 5/7: Tree rendering
#> ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
#> ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
#> 2026-09-16T00:09:26.201+08:00 | INFO     | Collapsing 5 clades...
#> 2026-09-16T00:09:26.212+08:00 | INFO     | Clade collapse complete
#> 2026-09-16T00:09:26.212+08:00 | INFO     | Timer 'tree_rendering': 50 ms
#> 2026-09-16T00:09:26.212+08:00 | INFO     | Step 6/7: Timescale integration
#> 
#> ============================================================
#>                       Pipeline Complete
#> ============================================================
#> 2026-09-16T00:09:26.240+08:00 | INFO     |   Tips                        : 50
#> 2026-09-16T00:09:26.240+08:00 | INFO     |   Groups parsed               : 5
#> 2026-09-16T00:09:26.240+08:00 | INFO     |   Groups collapsed            : 5
#> 2026-09-16T00:09:26.240+08:00 | INFO     |   Singleton groups            : 0
#> 2026-09-16T00:09:26.240+08:00 | INFO     |   Skipped (non-monophyletic)  : 0
#> 2026-09-16T00:09:26.240+08:00 | INFO     |   Skipped (root/zero-tip)     : 0
#> 2026-09-16T00:09:26.240+08:00 | INFO     |   Taxonomy format             : GTDB
#> 2026-09-16T00:09:26.240+08:00 | INFO     |   Layout                      : rectangular
#> 2026-09-16T00:09:26.240+08:00 | INFO     |   Timescale                   : disabled
#> 2026-09-16T00:09:26.240+08:00 | INFO     | plot_timetree completed successfully

# Standard positions
p <- plot_timetree(example_tree, rank = "phylum",
                   taxonomy_format = "GTDB",
                   add_timescale = FALSE,
                   legend_position = "right")
#> 
#> ============================================================
#>            Rclade: Phylogenetic Tree Visualization
#> ============================================================
#> 2026-09-16T00:09:26.241+08:00 | INFO     | Starting plot_timetree pipeline
#> 2026-09-16T00:09:26.241+08:00 | INFO     | Tree input               : phylo object
#> 2026-09-16T00:09:26.241+08:00 | INFO     | Rank                     : phylum
#> 2026-09-16T00:09:26.241+08:00 | INFO     | Layout                   : rectangular
#> 2026-09-16T00:09:26.241+08:00 | INFO     | Unit                     : auto
#> 2026-09-16T00:09:26.241+08:00 | INFO     | Step 1/7: Input validation and reading
#> 
#>   --------------------------------------------------
#>   >> Input Validation
#>   --------------------------------------------------
#> 2026-09-16T00:09:26.242+08:00 | INFO     | Tips                     : 50
#> 2026-09-16T00:09:26.242+08:00 | INFO     | Internal nodes           : 49
#> 2026-09-16T00:09:26.242+08:00 | INFO     | Edge lengths range       : 40.1579 to 2758.4006
#> 2026-09-16T00:09:26.242+08:00 | INFO     | Input validation passed
#> 2026-09-16T00:09:26.242+08:00 | INFO     | Timer 'input_reading': 1 ms
#> 2026-09-16T00:09:26.242+08:00 | INFO     | Step 2/7: Taxonomy parsing
#> 2026-09-16T00:09:26.243+08:00 | INFO     | Using rank-based taxonomy: phylum
#> 2026-09-16T00:09:26.246+08:00 | INFO     | Detected format          : GTDB
#> 2026-09-16T00:09:26.247+08:00 | INFO     | Groups found             : 5
#> 2026-09-16T00:09:26.247+08:00 | INFO     | Timer 'taxonomy_parsing': 4 ms
#> 2026-09-16T00:09:26.247+08:00 | INFO     | Step 3/7: MRCA computation and monophyly check
#> 2026-09-16T00:09:26.247+08:00 | INFO     | Checking monophyly and computing MRCA for each group...
#> 2026-09-16T00:09:26.248+08:00 | INFO     | Valid groups for collapse: 5 out of 5 total groups
#> 2026-09-16T00:09:26.248+08:00 | INFO     | Valid MRCA nodes         : 5
#> 2026-09-16T00:09:26.248+08:00 | INFO     | Timer 'mrca_computation': 1 ms
#> 2026-09-16T00:09:26.248+08:00 | INFO     | Step 4/7: Color generation
#> 2026-09-16T00:09:26.249+08:00 | INFO     | Color palette            : viridis
#> 2026-09-16T00:09:26.249+08:00 | INFO     | Step 5/7: Tree rendering
#> ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
#> ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
#> 2026-09-16T00:09:26.285+08:00 | INFO     | Collapsing 5 clades...
#> 2026-09-16T00:09:26.299+08:00 | INFO     | Clade collapse complete
#> 2026-09-16T00:09:26.299+08:00 | INFO     | Timer 'tree_rendering': 50 ms
#> 2026-09-16T00:09:26.300+08:00 | INFO     | Step 6/7: Timescale integration
#> 
#> ============================================================
#>                       Pipeline Complete
#> ============================================================
#> 2026-09-16T00:09:26.328+08:00 | INFO     |   Tips                        : 50
#> 2026-09-16T00:09:26.329+08:00 | INFO     |   Groups parsed               : 5
#> 2026-09-16T00:09:26.329+08:00 | INFO     |   Groups collapsed            : 5
#> 2026-09-16T00:09:26.329+08:00 | INFO     |   Singleton groups            : 0
#> 2026-09-16T00:09:26.329+08:00 | INFO     |   Skipped (non-monophyletic)  : 0
#> 2026-09-16T00:09:26.329+08:00 | INFO     |   Skipped (root/zero-tip)     : 0
#> 2026-09-16T00:09:26.329+08:00 | INFO     |   Taxonomy format             : GTDB
#> 2026-09-16T00:09:26.329+08:00 | INFO     |   Layout                      : rectangular
#> 2026-09-16T00:09:26.329+08:00 | INFO     |   Timescale                   : disabled
#> 2026-09-16T00:09:26.329+08:00 | INFO     | plot_timetree completed successfully

Clade Labels

p <- plot_timetree(example_tree, rank = "phylum",
                   taxonomy_format = "GTDB",
                   add_timescale = FALSE,
                   show_clade_label = TRUE)
#> 
#> ============================================================
#>            Rclade: Phylogenetic Tree Visualization
#> ============================================================
#> 2026-09-16T00:09:26.366+08:00 | INFO     | Starting plot_timetree pipeline
#> 2026-09-16T00:09:26.366+08:00 | INFO     | Tree input               : phylo object
#> 2026-09-16T00:09:26.366+08:00 | INFO     | Rank                     : phylum
#> 2026-09-16T00:09:26.366+08:00 | INFO     | Layout                   : rectangular
#> 2026-09-16T00:09:26.366+08:00 | INFO     | Unit                     : auto
#> 2026-09-16T00:09:26.366+08:00 | INFO     | Step 1/7: Input validation and reading
#> 
#>   --------------------------------------------------
#>   >> Input Validation
#>   --------------------------------------------------
#> 2026-09-16T00:09:26.367+08:00 | INFO     | Tips                     : 50
#> 2026-09-16T00:09:26.367+08:00 | INFO     | Internal nodes           : 49
#> 2026-09-16T00:09:26.367+08:00 | INFO     | Edge lengths range       : 40.1579 to 2758.4006
#> 2026-09-16T00:09:26.367+08:00 | INFO     | Input validation passed
#> 2026-09-16T00:09:26.368+08:00 | INFO     | Timer 'input_reading': 1 ms
#> 2026-09-16T00:09:26.368+08:00 | INFO     | Step 2/7: Taxonomy parsing
#> 2026-09-16T00:09:26.368+08:00 | INFO     | Using rank-based taxonomy: phylum
#> 2026-09-16T00:09:26.372+08:00 | INFO     | Detected format          : GTDB
#> 2026-09-16T00:09:26.372+08:00 | INFO     | Groups found             : 5
#> 2026-09-16T00:09:26.372+08:00 | INFO     | Timer 'taxonomy_parsing': 4 ms
#> 2026-09-16T00:09:26.372+08:00 | INFO     | Step 3/7: MRCA computation and monophyly check
#> 2026-09-16T00:09:26.372+08:00 | INFO     | Checking monophyly and computing MRCA for each group...
#> 2026-09-16T00:09:26.373+08:00 | INFO     | Valid groups for collapse: 5 out of 5 total groups
#> 2026-09-16T00:09:26.373+08:00 | INFO     | Valid MRCA nodes         : 5
#> 2026-09-16T00:09:26.373+08:00 | INFO     | Timer 'mrca_computation': 1 ms
#> 2026-09-16T00:09:26.374+08:00 | INFO     | Step 4/7: Color generation
#> 2026-09-16T00:09:26.374+08:00 | INFO     | Color palette            : viridis
#> 2026-09-16T00:09:26.374+08:00 | INFO     | Step 5/7: Tree rendering
#> ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
#> ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
#> 2026-09-16T00:09:26.411+08:00 | INFO     | Collapsing 5 clades...
#> 2026-09-16T00:09:26.423+08:00 | INFO     | Clade collapse complete
#> 2026-09-16T00:09:26.423+08:00 | INFO     | Timer 'tree_rendering': 49 ms
#> 2026-09-16T00:09:26.424+08:00 | INFO     | Step 6/7: Timescale integration
#> 
#> ============================================================
#>                       Pipeline Complete
#> ============================================================
#> 2026-09-16T00:09:26.457+08:00 | INFO     |   Tips                        : 50
#> 2026-09-16T00:09:26.457+08:00 | INFO     |   Groups parsed               : 5
#> 2026-09-16T00:09:26.457+08:00 | INFO     |   Groups collapsed            : 5
#> 2026-09-16T00:09:26.457+08:00 | INFO     |   Singleton groups            : 0
#> 2026-09-16T00:09:26.457+08:00 | INFO     |   Skipped (non-monophyletic)  : 0
#> 2026-09-16T00:09:26.457+08:00 | INFO     |   Skipped (root/zero-tip)     : 0
#> 2026-09-16T00:09:26.457+08:00 | INFO     |   Taxonomy format             : GTDB
#> 2026-09-16T00:09:26.458+08:00 | INFO     |   Layout                      : rectangular
#> 2026-09-16T00:09:26.458+08:00 | INFO     |   Timescale                   : disabled
#> 2026-09-16T00:09:26.458+08:00 | INFO     | plot_timetree completed successfully
print(p)

Taxonomy Quality Report

Before finalizing your figure, verify label parsing quality:

summarize_taxonomy_quality(example_tree$tip.label, format = "GTDB")
#> === Taxonomy Label Parsing Quality Report ===
#> Total labels: 50
#> Detected format: GTDB
#> 
#> Per-rank parse rates:
#>   kingdom        0.0% (0/50) 
#>   domain       100.0% (50/50) ====================
#>   phylum       100.0% (50/50) ====================
#>   class        100.0% (50/50) ====================
#>   order          0.0% (0/50) 
#>   family         0.0% (0/50) 
#>   genus          0.0% (0/50) 
#>   species        0.0% (0/50) 
#>   subspecies     0.0% (0/50) 
#> 
#> All labels parsed successfully.

Batch Processing

Process multiple tree files at once:

batch_plot(input_dir = "trees/",
           output_dir = "figures/",
           pattern = "*.tre",
           rank = "phylum",
           taxonomy_format = "GTDB")

Reproducibility

save_session_info("session_info.txt")

References & Acknowledgments

Rclade builds on the ggtree and deeptime R packages. If you use Rclade in published research, please cite Rclade along with these key dependencies:

The geological timescale data is based on the ICS International Chronostratigraphic Chart 2023/02 (https://stratigraphy.org/chart/).

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.