APE / Phangorn:如何包装尖端标签?

时间:2019-05-06 14:04:42

标签: r phylogeny r-ape

我正在使用ape::plot.phylo(通过phangorn::plotBS进行调用?)绘制一些系统发育树。问题是尖端标签很长,我想以某种方式将它们包裹起来。我似乎找不到plotplot.phylo / plotBS中的任何选项来解决这个问题。

有什么想法可以使tip.labels变成文字包装吗?

样品尖端标签:“ QER棘皮动物Asterozoa小行星Forcipulatacea Forcipulatida Asteriidae Asterias.rubens UNID1”

1 个答案:

答案 0 :(得分:1)

最简单的解决方案实际上是更改tip.label对象中的phylo元素。

## Making a tree with three tips of 20 characters each
tree <- rcoal(3, tip.label = replicate(3, paste(sample(letters, 20), collapse = "")))
## The tree tip labels
tree$tip.label
# [1] "thsdmrigufpykvlawqbz" "dlicefyjonmqugbptxzr" "adioznspgbkjqryelfum"

然后您可以按如下所示用换行符(\n)环绕第n个字符:

## Declaring the pattern and text to replace at a specific position
position <- 10
pattern <- paste0('^([a-z]{', position-1, '})([a-z]+)$')
text <- paste0('\\1', "\n", '\\2')
wrap_tips <- gsub(pattern, text, tree$tip.label)
wrap_tips
# [1] "thsdmrigu\nfpykvlawqbz" "dlicefyjo\nnmqugbptxzr" "adioznspg\nbkjqryelfum"

当然,您也可以用更简单的_(例如.)替换特定字符(例如\ngsub("_", "\\n", tree$tip.label))。

然后您可以创建树的副本,并给它包装的尖端标签:

## Duplicating the tree
tree_to_plot <- tree
## Changing the labels
tree_to_plot$tip.label <- wrap_tips
## Plotting the wrapped labels
plot(tree_to_plot)