You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除rotl系统发育树图中物种名末尾的ott编号?

移除rotl绘制系统发育树中的OTT编号

rotl包生成的系统发育树默认会在物种名称后附加OTT编号,要去掉这些编号可以通过修改树的tip.label实现,以下两种方法都可行:

方法一:正则表达式直接替换

利用正则匹配并移除标签末尾的OTT编号部分,代码修改如下:

taxa <- tnrs_match_names(bodysize_dat$Species)
tree <- tol_induced_subtree(ott_ids = ott_id(taxa))

# 移除标签中的OTT编号
tree$tip.label <- gsub(" ott\\d+$", "", tree$tip.label)

# 注意:原代码中no.margine拼写错误,修正为no.margin
plot(tree, cex = 0.8, label.offset = .1, no.margin = TRUE)

解释:gsub(" ott\\d+$", "", tree$tip.label) 会精准匹配标签末尾的 ott+数字组合,将其替换为空字符串,快速清除OTT编号。

方法二:利用匹配结果的对应关系替换

通过tnrs_match_names返回的匹配结果,建立物种名与带OTT编号标签的对应关系,替换更稳妥:

taxa <- tnrs_match_names(bodysize_dat$Species)
tree <- tol_induced_subtree(ott_ids = ott_id(taxa))

# 构建OTT编号标签与干净物种名的映射表
name_map <- setNames(taxa$matched_name, paste0(taxa$matched_name, " ott", ott_id(taxa)))
# 替换树的标签
tree$tip.label <- name_map[tree$tip.label]

# 绘图
plot(tree, cex = 0.8, label.offset = .1, no.margin = TRUE)

解释:这种方法基于匹配时的原始对应关系,避免正则表达式可能出现的特殊情况,适合物种名称格式复杂的场景。

内容的提问来源于stack exchange,提问作者Rach B.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 15:03:14