2017-04-12 45 views
4

下面的代码将绘制一个系统发育树,提示标签以斜体和下划线替换为空格。斜体和正常文本中的系统发育提示标签

library(ape) 
tr <- rtree(5, tip.label=c("a_b_x1", "b_c_2", "c_d_3y", "d_e_4", "e_f_5")) 
plot(tr) 

如何将规则文本与斜体文本以斜体形式结合在一个发展史的提示标签上?在最后一个下划线显示为普通文本后,我对斜体字母和字母数字段的字母感兴趣。

我尝试使用expressiontiplabels,但它不起作用,因为索引的解释。还要格式化sub以选择expression中的两个部分失败。

tip <- unlist(strsplit("a_b_x1", "_")) 
tiplabels(expression(italic(paste(tip[1:length(tip)-1], collapse = " ")) * tip[length(tip)]), 
    tip = which(tr$tip.label == "a_b_x1"), frame = "n", bg = "white") 

回答

1

我们可以构造表达与bquote

library(ape) 
set.seed(1) 
tr <- rtree(5, tip.label=c("a_b_x1", "b_c_2", "c_d_3y", "d_e_4", "e_f_5")) 
plot(tr, show.tip.label = F) 

for(i in seq_along(tr$tip.label)){ 
    tip <- unlist(strsplit(tr$tip.label[i], "_")) 

    tiplabels(
     bquote(italic(.(paste(tip[-length(tip)], collapse = ' '))) ~ .(tip[length(tip)])), 
     tip = i, adj = c(0, 0.5), frame = "n", bg = "white" 
    ) 

} 

enter image description here