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

如何用R语言从Newick树生成时间进化树(Chronogram)

使用R语言绘制带节点时间阶段标注的灭绝类群系统发育树

以下是具体实现步骤,基于常用的系统发育树分析包ape和可视化包ggtree(更灵活的ggplot2风格):

1. 安装并加载必要的R包

首先安装所需工具包(首次运行时执行),然后加载:

install.packages(c("ape", "ggtree", "dplyr"))
library(ape)
library(ggtree)
library(dplyr)

2. 读取Newick格式的树文件

用ape包的read.tree()函数读取你的自定义树文件:

# 替换为你的树文件路径
tree <- read.tree("your_extinct_group_tree.newick")

3. 准备节点时间阶段数据

你需要提前整理好每个内部节点对应的时间阶段信息,格式为包含node(节点编号)和time_stage(时间阶段名称)的数据框。
注意:R中系统发育树的节点编号规则:终端节点编号从1到物种数量(length(tree$tip.label)),内部节点从物种数量+1开始,直到2*length(tree$tip.label)-1。你可以先运行以下代码查看节点编号:

# 绘制树并显示所有节点编号
plot(tree)
nodelabels()
tiplabels()

示例节点时间数据(替换为你实际的节点-时间对应关系):

node_time_df <- data.frame(
  node = c(6, 7, 8, 9), # 对应你的内部节点编号
  time_stage = c("寒武纪晚期", "奥陶纪早期", "志留纪", "泥盆纪") # 对应时间阶段
)

4. 绘制带时间标注的可视化树

方法一:使用ggtree(推荐,样式更灵活)

ggtree基于ggplot2,支持丰富的自定义样式:

# 绘制基础树,可选布局:rectangular(矩形)、circular(圆形)、slanted(斜向)等
p <- ggtree(tree, layout = "rectangular", edge.width = 1.2) +
  geom_tiplab(size = 3, align = TRUE) + # 添加终端物种标签
  geom_nodelab(
    aes(label = time_stage), 
    data = node_time_df, 
    size = 2.8, 
    color = "#d9534f", 
    hjust = -0.1 # 调整标注位置,避免与节点重叠
  )

# 如果你的树是时间校准过的(分支长度代表时间),可以添加时间轴:
p <- p + theme_tree2() + scale_x_continuous(breaks = seq(0, 500, 50))

# 输出图形
print(p)

方法二:使用ape包的基础绘图

如果你习惯基础绘图风格,可直接用ape的函数:

# 绘制系统发育树
plot(tree, type = "phylogram", edge.width = 1.5, cex = 0.8)
# 添加节点时间标注
nodelabels(
  text = node_time_df$time_stage, 
  node = node_time_df$node, 
  col = "#d9534f", 
  cex = 0.7, 
  adj = c(0, 0.5) # 调整标注位置
)
# 添加终端物种标签(默认已显示,可调整)
tiplabels(cex = 0.8)

5. 自定义调整(可选)

  • 若标注重叠,可调整hjust/vjust(ggtree)或adj(ape)参数,或使用ggtree的geom_nodelab_repel()函数自动避免重叠:
    p <- p + geom_nodelab_repel(aes(label = time_stage), data = node_time_df, size = 2.8, color = "#d9534f")
    
  • 可修改树的颜色、分支粗细、标签字体等参数,适配你的展示需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:20:17