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

如何用tanggle包的ggsplitnet同时绘制进化树网络的样本名与分组色点

解决ggsplitnet同时显示样本名和分组着色符号的问题

核心思路是保留进化树网络的原始样本标签,通过外部数据框关联分组信息,再在绘图时分别调用标签和点的图层,无需修改Nnet$translate对象。

完整解决方案代码

# 加载所需包
library(phangorn)
library(ggtree)
library(tanggle)

# 读取进化树网络
fdir <- system.file("extdata/trees", package = "phangorn")
Nnet <- phangorn::read.nexus.networx(file.path(fdir, "woodmouse.nxs"))

# 定义分组信息,创建包含样本名和分组的数据框
mygroups <- rep(LETTERS[1:3], each = 5)
group_df <- data.frame(label = Nnet$translate$label, group = mygroups)

# 绘制同时显示样本名和分组着色点的网络
ggsplitnet(Nnet) +
  geom_tippoint(aes(color = group), size = 5) +  # 按分组着色点
  geom_tiplab2() +  # 显示原始样本名
  scale_color_manual(values = c("A" = "red", "B" = "blue", "C" = "green")) +  # 自定义颜色
  theme(legend.position = "right")

关键说明

  • 不要修改Nnet$translate$label,保留原始样本名才能让geom_tiplab2()正确显示样本名称。
  • 通过group_df将样本名与分组一一对应,ggtree系列函数会自动通过label列匹配树对象和外部数据。
  • geom_tippoint()的aes(color = group)直接引用外部数据框的分组列,实现按组着色。
  • 如果需要调整标签和点的位置,可以给geom_tiplab2()添加offset参数(比如offset = 0.2),避免标签和点重叠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 09:57:24