R中的系统发育尖端标签中的斜体和常规文本

时间:2017-04-12 19:36:55

标签: r regex phylogeny plotmath

以下代码将绘制一个系统发育树,其中斜体标签以斜体和下划线替换为空格。

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 个答案:

答案 0 :(得分: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