Skip to content

Instantly share code, notes, and snippets.

@andersgs
Created February 20, 2018 03:54
Show Gist options
  • Save andersgs/82b3fd51f7d44bc87179d456805c60d6 to your computer and use it in GitHub Desktop.
Save andersgs/82b3fd51f7d44bc87179d456805c60d6 to your computer and use it in GitHub Desktop.
Quick interactive phylogenetic tree in R
# LOAD LIBS ---------------------------------------------------------------
library(ape)
library(ggtree)
library(plotly)
# CREATE A TREE -------------------------------------------------------------
n_samples <- 20
n_grp <- 4
tree <- ape::rtree(n = n_samples)
# CREATE SOME METADATA ----------------------------------------------------
id <- tree$tip.label
set.seed(42)
grp <- sample(LETTERS[1:n_grp], size = n_samples, replace = T)
dat <- tibble::tibble(id = id,
grp = grp)
# PLOT THE TREE -----------------------------------------------------------
p1 <- ggtree(tree)
metat <- p1$data %>%
dplyr::inner_join(dat, c('label' = 'id'))
p2 <- p1 +
geom_point(data = metat,
aes(x = x,
y = y,
colour = grp,
label = id))
plotly::ggplotly(p2)
@erikenbody
Copy link

re @gotwals it seems as though the same general output can be achieved by switching to geom_text i.e.:

p2 <- p1 +
  geom_text(data = metat,
             aes(x = x,
                 y = y,
                 colour = grp,
                 label = id))

@BTBIIT
Copy link

BTBIIT commented Aug 26, 2022

I don't know if you can see this, but this code works really well.
Is there any way to additionally display the bootstrap value or tip label as the ID of the sample rather than the group?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment