https://twitter.com/drandersgs/status/965996335882059776 推特上@drandersgs的推文,演示了ggtree+plotly进行交互树探索进化树。我们先看图: 代码很简单: # LOAD LIBS --------------------------------------------------------------- library(ape) library(ggtree) library(plotly) # CREATE A TREE ------------------------------------------------------------- n_samples <->->20 n_grp <->->4 tree <- ape::rtree(n="">-> # CREATE SOME METADATA ---------------------------------------------------- id <->-> set.seed(42) grp <->->1:n_grp], size = n_samples, replace = T) dat <- tibble::tibble(id="">-> grp = grp) # PLOT THE TREE ----------------------------------------------------------- p1 <->-> 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) ->
但如果你对ggtree熟悉的话,我想你应该知道这个图的产生可以用更加ggtree、更加简单的方式: p1 <->-> 这一句后面的代码,其实干的就是下面一个语句而已。
p2 <- p1="">->+% dat + geom_tippoint(aes(color=grp))
但上面这个p2 用ggplotly 的时候,就会报名,因为我在ggtree里写的这个geom_tippoint 是没有写一个函数去翻译成plotly的,这个有待以后去写,要想让plotly真正支持ggtree,还要很多事情要做的。但起码简单一些的事情,比如像上面这个,去zoom in, zoom out, 鼠标停留在节点上,看一些相关的注释,还是可以做到的。 交互式可视化,我在ggtree中也写过一点功能,请移步《交互式操作进化树》。 另外关于ggtree和其它包合体,以相互扩展功能的,例子还有很多,比如: 分别是和ggbio, ggbridges,emojifont,comicR和ggimage包的合体。 给赞 给Y叔点个赞 小程序
|