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-26T23:06:13.511+00:00 | INFO | Starting plot_timetree pipeline
#> 2026-09-26T23:06:13.512+00:00 | INFO | Tree input : phylo object
#> 2026-09-26T23:06:13.513+00:00 | INFO | Rank : phylum
#> 2026-09-26T23:06:13.513+00:00 | INFO | Layout : rectangular
#> 2026-09-26T23:06:13.513+00:00 | INFO | Unit : auto
#> 2026-09-26T23:06:13.514+00:00 | INFO | Step 1/7: Input validation and reading
#>
#> --------------------------------------------------
#> >> Input Validation
#> --------------------------------------------------
#> 2026-09-26T23:06:13.516+00:00 | INFO | Tips : 50
#> 2026-09-26T23:06:13.516+00:00 | INFO | Internal nodes : 49
#> 2026-09-26T23:06:13.517+00:00 | INFO | Edge lengths range : 40.1579 to 2758.4006
#> 2026-09-26T23:06:13.518+00:00 | INFO | Input validation passed
#> 2026-09-26T23:06:13.518+00:00 | INFO | Timer 'input_reading': 3 ms
#> 2026-09-26T23:06:13.519+00:00 | INFO | Step 2/7: Taxonomy parsing
#> 2026-09-26T23:06:13.519+00:00 | INFO | Using rank-based taxonomy: phylum
#> 2026-09-26T23:06:13.528+00:00 | INFO | Detected format : GTDB
#> 2026-09-26T23:06:13.529+00:00 | INFO | Groups found : 5
#> 2026-09-26T23:06:13.529+00:00 | INFO | Timer 'taxonomy_parsing': 10 ms
#> 2026-09-26T23:06:13.530+00:00 | INFO | Step 3/7: MRCA computation and monophyly check
#> 2026-09-26T23:06:13.530+00:00 | INFO | Checking monophyly and computing MRCA for each group...
#> 2026-09-26T23:06:13.534+00:00 | INFO | Valid groups for collapse: 5 out of 5 total groups
#> 2026-09-26T23:06:13.534+00:00 | INFO | Valid MRCA nodes : 5
#> 2026-09-26T23:06:13.535+00:00 | INFO | Timer 'mrca_computation': 5 ms
#> 2026-09-26T23:06:14.332+00:00 | INFO | Step 4/7: Color generation
#> 2026-09-26T23:06:14.338+00:00 | INFO | Color palette : viridis
#> 2026-09-26T23:06:14.339+00: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-26T23:06:14.529+00:00 | INFO | Collapsing 5 clades...
#> 2026-09-26T23:06:14.559+00:00 | INFO | Clade collapse complete
#> 2026-09-26T23:06:14.560+00:00 | INFO | Timer 'tree_rendering': 220 ms
#> 2026-09-26T23:06:14.560+00:00 | INFO | Step 6/7: Timescale integration
#>
#> ============================================================
#> Pipeline Complete
#> ============================================================
#> 2026-09-26T23:06:14.653+00:00 | INFO | Tips : 50
#> 2026-09-26T23:06:14.653+00:00 | INFO | Groups parsed : 5
#> 2026-09-26T23:06:14.654+00:00 | INFO | Groups collapsed : 5
#> 2026-09-26T23:06:14.654+00:00 | INFO | Singleton groups : 0
#> 2026-09-26T23:06:14.655+00:00 | INFO | Skipped (non-monophyletic) : 0
#> 2026-09-26T23:06:14.655+00:00 | INFO | Skipped (root/zero-tip) : 0
#> 2026-09-26T23:06:14.655+00:00 | INFO | Taxonomy format : GTDB
#> 2026-09-26T23:06:14.656+00:00 | INFO | Layout : rectangular
#> 2026-09-26T23:06:14.656+00:00 | INFO | Timescale : disabled
#> 2026-09-26T23:06:14.657+00:00 | INFO | plot_timetree completed successfully
print(p)# 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-26T23:06:15.439+00:00 | INFO | Starting plot_timetree pipeline
#> 2026-09-26T23:06:15.440+00:00 | INFO | Tree input : phylo object
#> 2026-09-26T23:06:15.440+00:00 | INFO | Rank : phylum
#> 2026-09-26T23:06:15.441+00:00 | INFO | Layout : rectangular
#> 2026-09-26T23:06:15.441+00:00 | INFO | Unit : auto
#> 2026-09-26T23:06:15.441+00:00 | INFO | Step 1/7: Input validation and reading
#>
#> --------------------------------------------------
#> >> Input Validation
#> --------------------------------------------------
#> 2026-09-26T23:06:15.443+00:00 | INFO | Tips : 50
#> 2026-09-26T23:06:15.443+00:00 | INFO | Internal nodes : 49
#> 2026-09-26T23:06:15.443+00:00 | INFO | Edge lengths range : 40.1579 to 2758.4006
#> 2026-09-26T23:06:15.444+00:00 | INFO | Input validation passed
#> 2026-09-26T23:06:15.445+00:00 | INFO | Timer 'input_reading': 3 ms
#> 2026-09-26T23:06:15.445+00:00 | INFO | Step 2/7: Taxonomy parsing
#> 2026-09-26T23:06:15.446+00:00 | INFO | Using rank-based taxonomy: phylum
#> 2026-09-26T23:06:15.453+00:00 | INFO | Detected format : GTDB
#> 2026-09-26T23:06:15.454+00:00 | INFO | Groups found : 5
#> 2026-09-26T23:06:15.454+00:00 | INFO | Timer 'taxonomy_parsing': 9 ms
#> 2026-09-26T23:06:15.455+00:00 | INFO | Step 3/7: MRCA computation and monophyly check
#> 2026-09-26T23:06:15.455+00:00 | INFO | Checking monophyly and computing MRCA for each group...
#> 2026-09-26T23:06:15.458+00:00 | INFO | Valid groups for collapse: 5 out of 5 total groups
#> 2026-09-26T23:06:15.458+00:00 | INFO | Valid MRCA nodes : 5
#> 2026-09-26T23:06:15.459+00:00 | INFO | Timer 'mrca_computation': 4 ms
#> 2026-09-26T23:06:15.460+00:00 | INFO | Step 4/7: Color generation
#> 2026-09-26T23:06:15.461+00:00 | INFO | Color palette : viridis
#> 2026-09-26T23:06:15.461+00: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-26T23:06:15.568+00:00 | INFO | Collapsing 5 clades...
#> 2026-09-26T23:06:15.601+00:00 | INFO | Clade collapse complete
#> 2026-09-26T23:06:15.602+00:00 | INFO | Timer 'tree_rendering': 140 ms
#> 2026-09-26T23:06:15.602+00:00 | INFO | Step 6/7: Timescale integration
#>
#> ============================================================
#> Pipeline Complete
#> ============================================================
#> 2026-09-26T23:06:15.681+00:00 | INFO | Tips : 50
#> 2026-09-26T23:06:15.682+00:00 | INFO | Groups parsed : 5
#> 2026-09-26T23:06:15.682+00:00 | INFO | Groups collapsed : 5
#> 2026-09-26T23:06:15.683+00:00 | INFO | Singleton groups : 0
#> 2026-09-26T23:06:15.683+00:00 | INFO | Skipped (non-monophyletic) : 0
#> 2026-09-26T23:06:15.684+00:00 | INFO | Skipped (root/zero-tip) : 0
#> 2026-09-26T23:06:15.684+00:00 | INFO | Taxonomy format : GTDB
#> 2026-09-26T23:06:15.684+00:00 | INFO | Layout : rectangular
#> 2026-09-26T23:06:15.685+00:00 | INFO | Timescale : disabled
#> 2026-09-26T23:06:15.685+00:00 | INFO | plot_timetree completed successfully
print(p)# 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-26T23:06:16.288+00:00 | INFO | Starting plot_timetree pipeline
#> 2026-09-26T23:06:16.288+00:00 | INFO | Tree input : phylo object
#> 2026-09-26T23:06:16.289+00:00 | INFO | Rank : phylum
#> 2026-09-26T23:06:16.289+00:00 | INFO | Layout : rectangular
#> 2026-09-26T23:06:16.290+00:00 | INFO | Unit : auto
#> 2026-09-26T23:06:16.290+00:00 | INFO | Step 1/7: Input validation and reading
#>
#> --------------------------------------------------
#> >> Input Validation
#> --------------------------------------------------
#> 2026-09-26T23:06:16.291+00:00 | INFO | Tips : 50
#> 2026-09-26T23:06:16.292+00:00 | INFO | Internal nodes : 49
#> 2026-09-26T23:06:16.292+00:00 | INFO | Edge lengths range : 40.1579 to 2758.4006
#> 2026-09-26T23:06:16.293+00:00 | INFO | Input validation passed
#> 2026-09-26T23:06:16.294+00:00 | INFO | Timer 'input_reading': 3 ms
#> 2026-09-26T23:06:16.294+00:00 | INFO | Step 2/7: Taxonomy parsing
#> 2026-09-26T23:06:16.294+00:00 | INFO | Using rank-based taxonomy: phylum
#> 2026-09-26T23:06:16.302+00:00 | INFO | Detected format : GTDB
#> 2026-09-26T23:06:16.303+00:00 | INFO | Groups found : 5
#> 2026-09-26T23:06:16.303+00:00 | INFO | Timer 'taxonomy_parsing': 9 ms
#> 2026-09-26T23:06:16.304+00:00 | INFO | Step 3/7: MRCA computation and monophyly check
#> 2026-09-26T23:06:16.304+00:00 | INFO | Checking monophyly and computing MRCA for each group...
#> 2026-09-26T23:06:16.307+00:00 | INFO | Valid groups for collapse: 5 out of 5 total groups
#> 2026-09-26T23:06:16.307+00:00 | INFO | Valid MRCA nodes : 5
#> 2026-09-26T23:06:16.308+00:00 | INFO | Timer 'mrca_computation': 4 ms
#> 2026-09-26T23:06:16.308+00:00 | INFO | Step 4/7: Color generation
#> 2026-09-26T23:06:16.310+00:00 | INFO | Color palette : viridis
#> 2026-09-26T23:06:16.310+00: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-26T23:06:16.421+00:00 | INFO | Collapsing 5 clades...
#> 2026-09-26T23:06:16.449+00:00 | INFO | Clade collapse complete
#> 2026-09-26T23:06:16.450+00:00 | INFO | Timer 'tree_rendering': 139 ms
#> 2026-09-26T23:06:16.450+00:00 | INFO | Step 6/7: Timescale integration
#>
#> ============================================================
#> Pipeline Complete
#> ============================================================
#> 2026-09-26T23:06:16.536+00:00 | INFO | Tips : 50
#> 2026-09-26T23:06:16.537+00:00 | INFO | Groups parsed : 5
#> 2026-09-26T23:06:16.537+00:00 | INFO | Groups collapsed : 5
#> 2026-09-26T23:06:16.538+00:00 | INFO | Singleton groups : 0
#> 2026-09-26T23:06:16.538+00:00 | INFO | Skipped (non-monophyletic) : 0
#> 2026-09-26T23:06:16.538+00:00 | INFO | Skipped (root/zero-tip) : 0
#> 2026-09-26T23:06:16.539+00:00 | INFO | Taxonomy format : GTDB
#> 2026-09-26T23:06:16.539+00:00 | INFO | Layout : rectangular
#> 2026-09-26T23:06:16.540+00:00 | INFO | Timescale : disabled
#> 2026-09-26T23:06:16.540+00: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-26T23:06:16.542+00:00 | INFO | Starting plot_timetree pipeline
#> 2026-09-26T23:06:16.542+00:00 | INFO | Tree input : phylo object
#> 2026-09-26T23:06:16.542+00:00 | INFO | Rank : phylum
#> 2026-09-26T23:06:16.543+00:00 | INFO | Layout : rectangular
#> 2026-09-26T23:06:16.543+00:00 | INFO | Unit : auto
#> 2026-09-26T23:06:16.544+00:00 | INFO | Step 1/7: Input validation and reading
#>
#> --------------------------------------------------
#> >> Input Validation
#> --------------------------------------------------
#> 2026-09-26T23:06:16.545+00:00 | INFO | Tips : 50
#> 2026-09-26T23:06:16.545+00:00 | INFO | Internal nodes : 49
#> 2026-09-26T23:06:16.546+00:00 | INFO | Edge lengths range : 40.1579 to 2758.4006
#> 2026-09-26T23:06:16.547+00:00 | INFO | Input validation passed
#> 2026-09-26T23:06:16.547+00:00 | INFO | Timer 'input_reading': 3 ms
#> 2026-09-26T23:06:16.547+00:00 | INFO | Step 2/7: Taxonomy parsing
#> 2026-09-26T23:06:16.548+00:00 | INFO | Using rank-based taxonomy: phylum
#> 2026-09-26T23:06:16.556+00:00 | INFO | Detected format : GTDB
#> 2026-09-26T23:06:16.556+00:00 | INFO | Groups found : 5
#> 2026-09-26T23:06:16.557+00:00 | INFO | Timer 'taxonomy_parsing': 9 ms
#> 2026-09-26T23:06:16.557+00:00 | INFO | Step 3/7: MRCA computation and monophyly check
#> 2026-09-26T23:06:16.558+00:00 | INFO | Checking monophyly and computing MRCA for each group...
#> 2026-09-26T23:06:16.560+00:00 | INFO | Valid groups for collapse: 5 out of 5 total groups
#> 2026-09-26T23:06:16.561+00:00 | INFO | Valid MRCA nodes : 5
#> 2026-09-26T23:06:16.561+00:00 | INFO | Timer 'mrca_computation': 4 ms
#> 2026-09-26T23:06:16.562+00:00 | INFO | Step 4/7: Color generation
#> 2026-09-26T23:06:16.563+00:00 | INFO | Color palette : viridis
#> 2026-09-26T23:06:16.564+00: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-26T23:06:16.674+00:00 | INFO | Collapsing 5 clades...
#> 2026-09-26T23:06:16.702+00:00 | INFO | Clade collapse complete
#> 2026-09-26T23:06:16.702+00:00 | INFO | Timer 'tree_rendering': 138 ms
#> 2026-09-26T23:06:16.703+00:00 | INFO | Step 6/7: Timescale integration
#>
#> ============================================================
#> Pipeline Complete
#> ============================================================
#> 2026-09-26T23:06:16.783+00:00 | INFO | Tips : 50
#> 2026-09-26T23:06:16.784+00:00 | INFO | Groups parsed : 5
#> 2026-09-26T23:06:16.784+00:00 | INFO | Groups collapsed : 5
#> 2026-09-26T23:06:16.785+00:00 | INFO | Singleton groups : 0
#> 2026-09-26T23:06:16.785+00:00 | INFO | Skipped (non-monophyletic) : 0
#> 2026-09-26T23:06:16.786+00:00 | INFO | Skipped (root/zero-tip) : 0
#> 2026-09-26T23:06:16.786+00:00 | INFO | Taxonomy format : GTDB
#> 2026-09-26T23:06:16.786+00:00 | INFO | Layout : rectangular
#> 2026-09-26T23:06:16.787+00:00 | INFO | Timescale : disabled
#> 2026-09-26T23:06:16.787+00:00 | INFO | plot_timetree completed successfullyp <- plot_timetree(example_tree, rank = "phylum",
taxonomy_format = "GTDB",
add_timescale = FALSE,
show_clade_label = TRUE)
#>
#> ============================================================
#> Rclade: Phylogenetic Tree Visualization
#> ============================================================
#> 2026-09-26T23:06:16.831+00:00 | INFO | Starting plot_timetree pipeline
#> 2026-09-26T23:06:16.831+00:00 | INFO | Tree input : phylo object
#> 2026-09-26T23:06:16.831+00:00 | INFO | Rank : phylum
#> 2026-09-26T23:06:16.832+00:00 | INFO | Layout : rectangular
#> 2026-09-26T23:06:16.832+00:00 | INFO | Unit : auto
#> 2026-09-26T23:06:16.833+00:00 | INFO | Step 1/7: Input validation and reading
#>
#> --------------------------------------------------
#> >> Input Validation
#> --------------------------------------------------
#> 2026-09-26T23:06:16.834+00:00 | INFO | Tips : 50
#> 2026-09-26T23:06:16.834+00:00 | INFO | Internal nodes : 49
#> 2026-09-26T23:06:16.835+00:00 | INFO | Edge lengths range : 40.1579 to 2758.4006
#> 2026-09-26T23:06:16.836+00:00 | INFO | Input validation passed
#> 2026-09-26T23:06:16.836+00:00 | INFO | Timer 'input_reading': 3 ms
#> 2026-09-26T23:06:16.837+00:00 | INFO | Step 2/7: Taxonomy parsing
#> 2026-09-26T23:06:16.837+00:00 | INFO | Using rank-based taxonomy: phylum
#> 2026-09-26T23:06:16.845+00:00 | INFO | Detected format : GTDB
#> 2026-09-26T23:06:16.846+00:00 | INFO | Groups found : 5
#> 2026-09-26T23:06:16.846+00:00 | INFO | Timer 'taxonomy_parsing': 9 ms
#> 2026-09-26T23:06:16.847+00:00 | INFO | Step 3/7: MRCA computation and monophyly check
#> 2026-09-26T23:06:16.847+00:00 | INFO | Checking monophyly and computing MRCA for each group...
#> 2026-09-26T23:06:16.850+00:00 | INFO | Valid groups for collapse: 5 out of 5 total groups
#> 2026-09-26T23:06:16.850+00:00 | INFO | Valid MRCA nodes : 5
#> 2026-09-26T23:06:16.851+00:00 | INFO | Timer 'mrca_computation': 4 ms
#> 2026-09-26T23:06:16.852+00:00 | INFO | Step 4/7: Color generation
#> 2026-09-26T23:06:16.853+00:00 | INFO | Color palette : viridis
#> 2026-09-26T23:06:16.853+00: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-26T23:06:16.964+00:00 | INFO | Collapsing 5 clades...
#> 2026-09-26T23:06:16.994+00:00 | INFO | Clade collapse complete
#> 2026-09-26T23:06:16.994+00:00 | INFO | Timer 'tree_rendering': 141 ms
#> 2026-09-26T23:06:16.995+00:00 | INFO | Step 6/7: Timescale integration
#>
#> ============================================================
#> Pipeline Complete
#> ============================================================
#> 2026-09-26T23:06:17.092+00:00 | INFO | Tips : 50
#> 2026-09-26T23:06:17.092+00:00 | INFO | Groups parsed : 5
#> 2026-09-26T23:06:17.093+00:00 | INFO | Groups collapsed : 5
#> 2026-09-26T23:06:17.093+00:00 | INFO | Singleton groups : 0
#> 2026-09-26T23:06:17.094+00:00 | INFO | Skipped (non-monophyletic) : 0
#> 2026-09-26T23:06:17.094+00:00 | INFO | Skipped (root/zero-tip) : 0
#> 2026-09-26T23:06:17.094+00:00 | INFO | Taxonomy format : GTDB
#> 2026-09-26T23:06:17.095+00:00 | INFO | Layout : rectangular
#> 2026-09-26T23:06:17.095+00:00 | INFO | Timescale : disabled
#> 2026-09-26T23:06:17.096+00:00 | INFO | plot_timetree completed successfully
print(p)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.Process multiple tree files at once:
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/).