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

ggtree绘制进化树时外类群分支显示异常的解决问询

进化树可视化差异的原因与解决方案

差异原因

  • ggtree与FigTree的默认布局逻辑不同:FigTree默认采用梯状分支布局(Cladogram),且会自动基于外类群调整根节点位置;而ggtree默认使用矩形布局(rectangular),若未手动指定根节点,可能会导致外类群分支的显示位置、拓扑结构呈现差异。
  • 分支长度处理逻辑差异:FastTree输出的树包含分支长度信息,FigTree默认按实际分支长度缩放显示,ggtree若未明确设置branch.length参数,可能会忽略或采用不同的缩放规则,导致分支视觉长度不符。

实现FigTree同款显示的步骤

  1. 重新指定树的根节点
    先确保树以外类群(OG)为根,避免拓扑结构偏移:

    library(ape)
    library(ggtree)
    # 读取FastTree输出的树文件
    tree <- read.tree("your_tree_file.tre")
    # 以外类群为根,resolve.root参数确保根节点分支正确拆分
    tree_rooted <- root(tree, outgroup = "OG", resolve.root = TRUE)
    
  2. 匹配FigTree的梯状布局
    使用layout="cladogram"参数调用ggtree,同时设置分支长度显示规则(若要和FigTree一样只显示拓扑不展示长度,用branch.length="none";若保留长度缩放,用branch.length="branch.length"):

    # 拓扑优先的梯状布局(匹配FigTree默认)
    p <- ggtree(tree_rooted, layout = "cladogram", branch.length = "none") +
      geom_tiplab(size = 3)  # 调整标签大小匹配FigTree显示效果
    # 若需要保留分支长度的缩放效果,改用以下代码
    # p <- ggtree(tree_rooted, layout = "rectangular", branch.length = "branch.length") + geom_tiplab(size = 3)
    
  3. 对齐分支样式
    FigTree默认使用黑色直角分支,可通过geom_tree调整ggtree的分支样式:

    p <- p + geom_tree(linetype = 1, color = "black", size = 0.5)
    
  4. 验证结构一致性
    将处理后的树导出,导入FigTree对比,确认拓扑结构一致:

    write.tree(tree_rooted, "rooted_tree.tre")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 05:53:20