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)

如何在系统发育的提示标签中将常规文本与斜体文本结合起来?我对显示为常规文本的最后一个下划线之后的斜体和字母数字段中的字母感兴趣。

我尝试使用expressionwith tiplabels,但由于索引的解释它不起作用。也格式化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")
4

1 回答 1

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"
    )

}

在此处输入图像描述

于 2017-04-13T04:59:40.513 回答