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)
@andersgs
Copy link
Author

Note that I am cheating a bit. I added label to the aes in geom_point to get that info when mousing over. For that, I get a warning when I run the code above about ignoring the unknown aesthetic label.

@elia427
Copy link

elia427 commented Oct 16, 2018

Thanks, good stuff. How can you remove the duplicate x and y labels?

@AhmedYoussef95
Copy link

@teshu02 You can specify which aesthetics show when mousing over nodes by setting the tooltip parameter within the ggplotly function.

Example using above snippet:
plotly::ggplotly(p2, tooltip = "label")

@Elaheh-Alizadeh
Copy link

I can not get the other layout options of ggtree to work properly. I get warnings and just part of the plot. Do you know how can I fix this?

@gotwals
Copy link

gotwals commented Oct 21, 2019

I get an error with the aesthetic label: Warning: Ignoring unknown aesthetics: label

@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