-
-
Save andersgs/82b3fd51f7d44bc87179d456805c60d6 to your computer and use it in GitHub Desktop.
# 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) |
Thanks, good stuff. How can you remove the duplicate x and y labels?
@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")
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?
I get an error with the aesthetic label: Warning: Ignoring unknown aesthetics: label
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))
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?
Note that I am cheating a bit. I added
label
to theaes
ingeom_point
to get that info when mousing over. For that, I get a warning when I run the code above about ignoring the unknown aestheticlabel
.