简体   繁体   中英

Adding symbols and information to Phylogenetic tree

I am drawing a phylogenetic tree, and I would like to add something like a 'dead symbol̈́̈́' (eg a skull) in the tips of the extinct species.

I would also like to add an x-axes bar with latex symbols in the branching times (eg $\\Delta t_i$ or numbers) marked with dots.

What I have so far is this tree. I would like to add the dead symbol right after the green dotted line in this case.

library(ape)
rec1 = '((B:1,A:1):1,(F:1,C:1.5):0.5);'
rec1 = read.tree(text = rec1)
plot(rec1,show.tip.label = F,edge.color = c("black","black","black","black","darkgreen","black"),edge.width = 2,edge.lty = c(rep(1,4),4,1))

One possibility is using ggtree. As in: https://guangchuangyu.github.io/2018/03/annotating-phylogenetic-tree-with-images-using-ggtree-and-ggimage/

#source("https://bioconductor.org/biocLite.R")
#biocLite("BiocUpgrade") # you may need this
#biocLite("ggtree")
library(ggtree)

tree<-rtree(10)
pg<-ggtree(tree)
d <- data.frame(node = as.character(10:15),
                images = c("https://i.imgur.com/8VA9cYw.png",
                           "https://i.imgur.com/XYM1T2x.png",
                           "https://i.imgur.com/EQs5ZZe.png",
                           "https://i.imgur.com/2xin0UK.png",
                           "https://i.imgur.com/hbftayl.png",
                           "https://i.imgur.com/3wDHW8n.png"))
pg %<+% d + geom_nodelab(aes(image=images), geom="image")

With phylopic

#install.packages('rphylopic')
library(rphylopic)
string<-name_search(text = "Homo sapiens")
selectstr<-string[2,]
string2<-name_images(uuid = selectstr)$same[[1]]$uid
tree<-rtree(10)
phylopic_info <- data.frame(node = c(12,13),
                            phylopic = string2)
nt<-ggtree(tree) 
nt %<+% phylopic_info + 
  geom_nodelab(aes(image=phylopic), geom="phylopic", alpha=.5, color='steelblue')

在此处输入图片说明

I can see two options how to display an "extinct" symbol on a tree tip.

  1. Use a Unicode symbol with an appropriate font that can display it as per this blog .
  2. Add a raster image onto the tree plot.

The following code will display an extinction symbol next to the green edge in your tree. It draws on information found here .

library(jpeg)
logo <- readJPEG("Downloads/Symbol1.jpg")
logo2 <- as.raster(logo)
r <- nrow(logo2)/ncol(logo2) # aspect ratio
s <- 0.4 # symbol size

# display plot to obtain its size
plot(rec1, edge.color = c("black","black","black","black","darkgreen","black"),
    edge.width = 2, edge.lty = c(rep(1,4),4,1))
lims <- par("usr") # plot area size
file_r <- (lims[2]-lims[1]) / (lims[4]-lims[3]) # aspect ratio for the file
file_s <- 480   # file size

# save tree with added symbol
png("tree_logo.png", height=file_s, width=file_s*file_r)
plot(rec1, show.tip.label = F, 
    edge.color = c("black","black","black","black","darkgreen","black"), 
    edge.width = 2, edge.lty = c(rep(1,4),4,1))
rasterImage(logo2, 1.6, 2.8, 1.6+s/r, 2.8+s)

# add axis
axisPhylo()
mtext(expression(Delta*italic("t")["i"]), side = 1, line = 3)
dev.off()

在此处输入图片说明

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM