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.
The simplest way to create a timetree visualization using the built-in example data:
library(Rclade)
# Load built-in example tree (50 tips, GTDB-style labels)
data(example_tree)
# Plot with phylum-level collapsing (no timescale for speed)
p <- plot_timetree(example_tree, rank = "phylum",
taxonomy_format = "GTDB",
add_timescale = FALSE)
#>
#> ============================================================
#> Rclade: Phylogenetic Tree Visualization
#> ============================================================
#> 2026-09-16T00:09:27.225+08:00 | INFO | Starting plot_timetree pipeline
#> 2026-09-16T00:09:27.225+08:00 | INFO | Tree input : phylo object
#> 2026-09-16T00:09:27.225+08:00 | INFO | Rank : phylum
#> 2026-09-16T00:09:27.225+08:00 | INFO | Layout : rectangular
#> 2026-09-16T00:09:27.226+08:00 | INFO | Unit : auto
#> 2026-09-16T00:09:27.226+08:00 | INFO | Step 1/7: Input validation and reading
#>
#> --------------------------------------------------
#> >> Input Validation
#> --------------------------------------------------
#> 2026-09-16T00:09:27.226+08:00 | INFO | Tips : 50
#> 2026-09-16T00:09:27.226+08:00 | INFO | Internal nodes : 49
#> 2026-09-16T00:09:27.226+08:00 | INFO | Edge lengths range : 40.1579 to 2758.4006
#> 2026-09-16T00:09:27.227+08:00 | INFO | Input validation passed
#> 2026-09-16T00:09:27.227+08:00 | INFO | Timer 'input_reading': 1 ms
#> 2026-09-16T00:09:27.227+08:00 | INFO | Step 2/7: Taxonomy parsing
#> 2026-09-16T00:09:27.227+08:00 | INFO | Using rank-based taxonomy: phylum
#> 2026-09-16T00:09:27.231+08:00 | INFO | Detected format : GTDB
#> 2026-09-16T00:09:27.231+08:00 | INFO | Groups found : 5
#> 2026-09-16T00:09:27.231+08:00 | INFO | Timer 'taxonomy_parsing': 4 ms
#> 2026-09-16T00:09:27.231+08:00 | INFO | Step 3/7: MRCA computation and monophyly check
#> 2026-09-16T00:09:27.231+08:00 | INFO | Checking monophyly and computing MRCA for each group...
#> 2026-09-16T00:09:27.232+08:00 | INFO | Valid groups for collapse: 5 out of 5 total groups
#> 2026-09-16T00:09:27.232+08:00 | INFO | Valid MRCA nodes : 5
#> 2026-09-16T00:09:27.232+08:00 | INFO | Timer 'mrca_computation': 1 ms
#> 2026-09-16T00:09:27.233+08:00 | INFO | Step 4/7: Color generation
#> 2026-09-16T00:09:27.233+08:00 | INFO | Color palette : viridis
#> 2026-09-16T00:09:27.233+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:27.271+08:00 | INFO | Collapsing 5 clades...
#> 2026-09-16T00:09:27.282+08:00 | INFO | Clade collapse complete
#> 2026-09-16T00:09:27.286+08:00 | INFO | Timer 'tree_rendering': 52 ms
#> 2026-09-16T00:09:27.286+08:00 | INFO | Step 6/7: Timescale integration
#>
#> ============================================================
#> Pipeline Complete
#> ============================================================
#> 2026-09-16T00:09:27.315+08:00 | INFO | Tips : 50
#> 2026-09-16T00:09:27.315+08:00 | INFO | Groups parsed : 5
#> 2026-09-16T00:09:27.315+08:00 | INFO | Groups collapsed : 5
#> 2026-09-16T00:09:27.315+08:00 | INFO | Singleton groups : 0
#> 2026-09-16T00:09:27.315+08:00 | INFO | Skipped (non-monophyletic) : 0
#> 2026-09-16T00:09:27.315+08:00 | INFO | Skipped (root/zero-tip) : 0
#> 2026-09-16T00:09:27.315+08:00 | INFO | Taxonomy format : GTDB
#> 2026-09-16T00:09:27.316+08:00 | INFO | Layout : rectangular
#> 2026-09-16T00:09:27.316+08:00 | INFO | Timescale : disabled
#> 2026-09-16T00:09:27.316+08:00 | INFO | plot_timetree completed successfully
print(p)Use main_title and sub_title to add
centered titles:
p <- plot_timetree(example_tree, rank = "phylum",
taxonomy_format = "GTDB",
add_timescale = FALSE,
main_title = "GTDB Bacterial Tree",
sub_title = "50 taxa | Phylum-level collapsing")
#>
#> ============================================================
#> Rclade: Phylogenetic Tree Visualization
#> ============================================================
#> 2026-09-16T00:09:27.472+08:00 | INFO | Starting plot_timetree pipeline
#> 2026-09-16T00:09:27.472+08:00 | INFO | Tree input : phylo object
#> 2026-09-16T00:09:27.472+08:00 | INFO | Rank : phylum
#> 2026-09-16T00:09:27.473+08:00 | INFO | Layout : rectangular
#> 2026-09-16T00:09:27.473+08:00 | INFO | Unit : auto
#> 2026-09-16T00:09:27.473+08:00 | INFO | Step 1/7: Input validation and reading
#>
#> --------------------------------------------------
#> >> Input Validation
#> --------------------------------------------------
#> 2026-09-16T00:09:27.473+08:00 | INFO | Tips : 50
#> 2026-09-16T00:09:27.473+08:00 | INFO | Internal nodes : 49
#> 2026-09-16T00:09:27.473+08:00 | INFO | Edge lengths range : 40.1579 to 2758.4006
#> 2026-09-16T00:09:27.474+08:00 | INFO | Input validation passed
#> 2026-09-16T00:09:27.474+08:00 | INFO | Timer 'input_reading': 1 ms
#> 2026-09-16T00:09:27.474+08:00 | INFO | Step 2/7: Taxonomy parsing
#> 2026-09-16T00:09:27.474+08:00 | INFO | Using rank-based taxonomy: phylum
#> 2026-09-16T00:09:27.478+08:00 | INFO | Detected format : GTDB
#> 2026-09-16T00:09:27.478+08:00 | INFO | Groups found : 5
#> 2026-09-16T00:09:27.478+08:00 | INFO | Timer 'taxonomy_parsing': 4 ms
#> 2026-09-16T00:09:27.478+08:00 | INFO | Step 3/7: MRCA computation and monophyly check
#> 2026-09-16T00:09:27.478+08:00 | INFO | Checking monophyly and computing MRCA for each group...
#> 2026-09-16T00:09:27.479+08:00 | INFO | Valid groups for collapse: 5 out of 5 total groups
#> 2026-09-16T00:09:27.479+08:00 | INFO | Valid MRCA nodes : 5
#> 2026-09-16T00:09:27.479+08:00 | INFO | Timer 'mrca_computation': 1 ms
#> 2026-09-16T00:09:27.480+08:00 | INFO | Step 4/7: Color generation
#> 2026-09-16T00:09:27.480+08:00 | INFO | Color palette : viridis
#> 2026-09-16T00:09:27.480+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:27.521+08:00 | INFO | Collapsing 5 clades...
#> 2026-09-16T00:09:27.532+08:00 | INFO | Clade collapse complete
#> 2026-09-16T00:09:27.532+08:00 | INFO | Timer 'tree_rendering': 52 ms
#> 2026-09-16T00:09:27.532+08:00 | INFO | Step 6/7: Timescale integration
#>
#> ============================================================
#> Pipeline Complete
#> ============================================================
#> 2026-09-16T00:09:27.567+08:00 | INFO | Tips : 50
#> 2026-09-16T00:09:27.567+08:00 | INFO | Groups parsed : 5
#> 2026-09-16T00:09:27.567+08:00 | INFO | Groups collapsed : 5
#> 2026-09-16T00:09:27.567+08:00 | INFO | Singleton groups : 0
#> 2026-09-16T00:09:27.567+08:00 | INFO | Skipped (non-monophyletic) : 0
#> 2026-09-16T00:09:27.567+08:00 | INFO | Skipped (root/zero-tip) : 0
#> 2026-09-16T00:09:27.567+08:00 | INFO | Taxonomy format : GTDB
#> 2026-09-16T00:09:27.567+08:00 | INFO | Layout : rectangular
#> 2026-09-16T00:09:27.568+08:00 | INFO | Timescale : disabled
#> 2026-09-16T00:09:27.568+08:00 | INFO | plot_timetree completed successfully
print(p)Use summarize_timetree() to inspect the collapse
metadata:
p <- plot_timetree(example_tree, rank = "phylum",
taxonomy_format = "GTDB",
add_timescale = FALSE)
#>
#> ============================================================
#> Rclade: Phylogenetic Tree Visualization
#> ============================================================
#> 2026-09-16T00:09:27.741+08:00 | INFO | Starting plot_timetree pipeline
#> 2026-09-16T00:09:27.741+08:00 | INFO | Tree input : phylo object
#> 2026-09-16T00:09:27.741+08:00 | INFO | Rank : phylum
#> 2026-09-16T00:09:27.741+08:00 | INFO | Layout : rectangular
#> 2026-09-16T00:09:27.741+08:00 | INFO | Unit : auto
#> 2026-09-16T00:09:27.741+08:00 | INFO | Step 1/7: Input validation and reading
#>
#> --------------------------------------------------
#> >> Input Validation
#> --------------------------------------------------
#> 2026-09-16T00:09:27.742+08:00 | INFO | Tips : 50
#> 2026-09-16T00:09:27.742+08:00 | INFO | Internal nodes : 49
#> 2026-09-16T00:09:27.742+08:00 | INFO | Edge lengths range : 40.1579 to 2758.4006
#> 2026-09-16T00:09:27.742+08:00 | INFO | Input validation passed
#> 2026-09-16T00:09:27.742+08:00 | INFO | Timer 'input_reading': 1 ms
#> 2026-09-16T00:09:27.743+08:00 | INFO | Step 2/7: Taxonomy parsing
#> 2026-09-16T00:09:27.743+08:00 | INFO | Using rank-based taxonomy: phylum
#> 2026-09-16T00:09:27.747+08:00 | INFO | Detected format : GTDB
#> 2026-09-16T00:09:27.747+08:00 | INFO | Groups found : 5
#> 2026-09-16T00:09:27.747+08:00 | INFO | Timer 'taxonomy_parsing': 4 ms
#> 2026-09-16T00:09:27.747+08:00 | INFO | Step 3/7: MRCA computation and monophyly check
#> 2026-09-16T00:09:27.747+08:00 | INFO | Checking monophyly and computing MRCA for each group...
#> 2026-09-16T00:09:27.748+08:00 | INFO | Valid groups for collapse: 5 out of 5 total groups
#> 2026-09-16T00:09:27.748+08:00 | INFO | Valid MRCA nodes : 5
#> 2026-09-16T00:09:27.749+08:00 | INFO | Timer 'mrca_computation': 1 ms
#> 2026-09-16T00:09:27.749+08:00 | INFO | Step 4/7: Color generation
#> 2026-09-16T00:09:27.749+08:00 | INFO | Color palette : viridis
#> 2026-09-16T00:09:27.749+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:27.790+08:00 | INFO | Collapsing 5 clades...
#> 2026-09-16T00:09:27.802+08:00 | INFO | Clade collapse complete
#> 2026-09-16T00:09:27.802+08:00 | INFO | Timer 'tree_rendering': 53 ms
#> 2026-09-16T00:09:27.802+08:00 | INFO | Step 6/7: Timescale integration
#>
#> ============================================================
#> Pipeline Complete
#> ============================================================
#> 2026-09-16T00:09:27.831+08:00 | INFO | Tips : 50
#> 2026-09-16T00:09:27.831+08:00 | INFO | Groups parsed : 5
#> 2026-09-16T00:09:27.831+08:00 | INFO | Groups collapsed : 5
#> 2026-09-16T00:09:27.831+08:00 | INFO | Singleton groups : 0
#> 2026-09-16T00:09:27.831+08:00 | INFO | Skipped (non-monophyletic) : 0
#> 2026-09-16T00:09:27.831+08:00 | INFO | Skipped (root/zero-tip) : 0
#> 2026-09-16T00:09:27.832+08:00 | INFO | Taxonomy format : GTDB
#> 2026-09-16T00:09:27.832+08:00 | INFO | Layout : rectangular
#> 2026-09-16T00:09:27.832+08:00 | INFO | Timescale : disabled
#> 2026-09-16T00:09:27.832+08:00 | INFO | plot_timetree completed successfully
summarize_timetree(p)
#> === Rclade Timetree Summary ===
#> Input tips: 50
#> Groups parsed (total): 5
#> Groups collapsed: 5
#> Singleton groups (1 tip, not collapsed): 0
#> Skipped non-monophyletic groups: 0
#> Skipped groups (root/zero-tip): 0
#> Displayed leaves after collapse: 5
#> Taxonomy format: GTDB
#> Collapse rank: phylum
#> Palette: viridis
#> Layout: rectangular
#> Timescale: no
#>
#> Group details:
#> P1 n=10 node=54
#> P2 n=10 node=63
#> P3 n=10 node=72
#> P4 n=10 node=82
#> P5 n=10 node=91# Save to PDF
save_timetree(p, "output.pdf", width = 14, height = 10)
# One-line pipeline
# Note: the geological timescale requires an explicit branch-length unit
# (Rclade does not infer units); pass unit = "Ma" or unit = "Ga".
plot_timetree(example_tree, rank = "phylum", unit = "Ga", output = "output.pdf")Before visualization, check how well your labels can be parsed:
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.Rclade builds on the ggtree and deeptime R packages. If you use Rclade in published research, please cite Rclade along with these key dependencies:
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.