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

如何基于edge.length使用phytools为系统发育树分支分状态着色

按分支长度片段着色系统发育树的解决方案

要实现按分支长度(比如以0.7为界限)给分支中间部分着色,你可以借助phytools包的splitEdge()函数先拆分目标分支,再用paintBranches()为拆分后的片段单独着色,具体步骤如下:

步骤1:加载包并生成示例树

library(ape)
library(phytools)

# 生成示例树
tree <- rtree(4)
# 查看分支ID和对应长度,确认目标分支(比如这里用edge=4)
print(tree$edge)
print(tree$edge.length)

步骤2:拆分目标分支

使用splitEdge()将目标分支在指定长度位置拆分为两段。这里以edge=4为例,拆分点距离祖先节点0.7的位置:

# 拆分分支:参数split为距离祖先节点的长度
split_tree <- splitEdge(tree, edge=4, split=0.7)

注意:split的数值必须小于目标分支的原始长度,否则会触发警告。

步骤3:为拆分后的片段着色

拆分后,原分支会被拆分为两条新分支,你可以为其中一段设置着色状态:

# 查看拆分后的分支列表,找到新增的分支(通常是最后一条edge)
print(split_tree$edge)

# 为拆分后的后半段分支设置状态"1",其余保持默认状态"0"
split_tree_painted <- paintBranches(split_tree, edge=nrow(split_tree$edge), state="1", anc.state="0")

# 绘制着色后的树,指定颜色对应关系
plotSimmap(split_tree_painted, lwd=4, colors=c("black", "red"))

这样就能实现仅让目标分支的指定长度片段变为红色的需求。

内容的提问来源于stack exchange,提问作者Carlo Meloni

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 11:35:58