library(ape)
# Archivo ML (NEWICK)
f_raxml <- "../docs/raxml_cox1_Stenopelmatus.tre"
# Lectura con ape
ml_phylo <- read.tree(f_raxml)
# Graficar con plot R-base
plot(ml_phylo, main = "Árbol con función base")
La visualización es clave en el análisis filogenético porque nos permite:
🔎 Explorar rápidamente la topología del árbol.
🧩 Manipular el árbol para resaltar procesos evolutivos que podrían explicar su topología.
📊 Comunicar resultados de manera clara.
🖼️ Generar figuras listas para publicación.
En R contamos con dos enfoques principales:
R baselibrary(ape)
# Archivo ML (NEWICK)
f_raxml <- "../docs/raxml_cox1_Stenopelmatus.tre"
# Lectura con ape
ml_phylo <- read.tree(f_raxml)
# Graficar con plot R-base
plot(ml_phylo, main = "Árbol con función base")
plot da una visualización inmediata y sencilla.
Opciones limitadas y complicadas de personalización (colores, etiquetas, etc.).
Sirve para inspección rápida, no para figuras de publicación.
ggtreeEjemplo básico
library(tidyverse)
library(ggtree)
ggtree(ml_phylo) +
ggtitle("Árbol con ggtree")
Usa la gramática de gráficos de ggplot2 (capas, estéticas).
Permite distintos layouts: slanted, circular, fan, etc.
Integra fácilmente metadatos y anotaciones.
library(patchwork)
# 9 variantes de layout/diseño
plots <- list(
ggtree(ml_phylo), # A recto
ggtree(ml_phylo, layout = "slanted"), # B diagonal
ggtree(ml_phylo, layout = "circular"), # C circular
ggtree(ml_phylo, layout = "fan", open.angle = 120), # D abanico
ggtree(ml_phylo, layout = "equal_angle"), # E ángulos iguales
ggtree(ml_phylo, layout = "daylight"), # F daylight
ggtree(ml_phylo, branch.length = "none"), # G sin longitudes
ggtree(ml_phylo, branch.length = "none", layout = "circular"),# H sin longitudes + circular
ggtree(ml_phylo, layout = "daylight", branch.length = "none") # I daylight + sin longitudes
)
# Márgenes uniformes para que no “salten”
plots <- lapply(plots, function(p) p + theme(plot.margin = margin(6,6,6,6)))
# Armar la grilla 3x3 y etiquetar A–I automáticamente
p_grid <- wrap_plots(plots, ncol = 3) + plot_annotation(tag_levels = "A")
p_grid