deepseek绘图之--系统发育树

在群体遗传学研究中,构建系统发育树是解析群体遗传结构和演化历史的核心手段。无论是单核苷酸多态性(SNP)分析、单倍型网络构建,还是群体分化研究,研究者常面临一个挑战:如何将复杂的群体...

在群体遗传学研究中,构建系统发育树是解析群体遗传结构和演化历史的核心手段。无论是单核苷酸多态性(SNP)分析、单倍型网络构建,还是群体分化研究,研究者常面临一个挑战:如何将复杂的群体遗传关系(如分支拓扑结构、节点支持率、遗传距离)以专业且直观的方式呈现?群体系统发育树凭借其"遗传关系可视化"的优势,成为群体遗传学论文中的关键图表,通过分支长度表示遗传差异、节点形状反映支持率,清晰展示个体或群体间的亲缘关系。然而,传统工具如R(ape, ggtree)、Python(DendroPy)或FigTree的绘图流程往往涉及繁琐的树文件处理、分支优化和注释调整,让研究者耗费大量时间在代码调试和图形美化上。


AI大模型的介入彻底改变了这一局面。只需提供您的群体遗传数据(如Newick/NEXUS格式的树文件),并用自然语言描述定制需求(如标注群体分组),AI即可自动生成"端到端"绘图脚本:从数据解析(处理缺失数据、优化分支布局)、美学调整(智能分支着色、自动标签避让),到添加专业元素(比例尺、图例、群体标记),最终生成可直接发表的高清矢量图——分支结构清晰,注释信息完整,配色符合领域审美标准,真正实现"专业绘图,一键生成"。


本文将带您体验如何通过AI协作,在短短5分钟内完成一幅专业的群体系统发育树,助您在群体遗传学研究中以极致的效率和专业度获得竞争优势!


初步构建绘图提示词

需要绘制群体的系统发育树,为了让他更高效的出图,我们尽量描述的详细一点,这样能够减少我们后面修改的次数,更容易得到想要的结果,首先确认自己的路径和绘图需要的文件,需要2个文件,分别是

1. 树文件(NWK格式)

attachments-2025-04-4DJ03GHQ68117e717d5dd.png

2. 样本分类文件

attachments-2025-04-YMvX0M4O68117e9123b7e.png

这里只截取了一小部分,类似的文件大家肯定见过,这里就不多赘述了

写完了的提示词如下,大家可以参考一下格式

读取两个文件

工作路径: /home/liuyf/pop-gwas/test

树文件: fasttree.nwk 

样本分类文件: group.txt (行=样本,列=分类,只有2列,没有列名 )

绘图工具: ggtree 

图形类型:进化树

颜色映射:分组的部分使用set3

绘图细节:先绘制进化树,再将分组信息添加到树的数据中,为每个分组添加背景颜色,添加样本名称标签

在deepseek输出上面写好的提示词,如果问题复杂可以打开deepthink

这样简单的就不需要了


初步生成绘图代码

attachments-2025-04-pFb1hp3G68117f0800ed8.jpg


给了详细的代码,我们来到rstudio运行一下结果如下:

attachments-2025-04-OAy6UYZ668117f3440aef.png

基本符合要求了,有的地方不太好,比如颜色之间相互覆盖,然后样本名称之间存在重叠等

让AI帮助我修改可视化效果

attachments-2025-04-OsvszBZk68117f74958b0.jpg

得到的结果如下,符合要求,如果有其他需求,也可以让他再调

attachments-2025-04-2tQNVsSn68117fa182961.png

最终绘图代码

# 加载必要的包
library(ggtree)
library(ggplot2)


# 读取数据
tree <- read.tree("fasttree.nwk")
group_data <- read.table("group.txt", header = FALSE, col.names = c("sample", "group"))


# 创建圆形树(关键参数设置)
p <- ggtree(tree, 
            layout = "circular",   # 必须的圆形布局
            branch.length = "none", # 忽略分支长度
            open.angle = 20) %<+% group_data +  # 合并分组数据


  # 枝条颜色映射分组
  geom_tree(aes(color = group), 
            size = 1.2, 
            lineend = "round") +


  # 颜色设置
  scale_color_brewer(
    palette = "Set3",
    name = "Group",
    na.value = "black"
  ) +


  # 标签优化核心设置(不使用repel)
  geom_tiplab(
    aes(color = group, angle = angle),  # 关键:继承圆形角度
    size = 2.5,
    offset = 1.8,      # 控制标签与枝条末端的距离(关键参数)
    hjust = 0.5,       # 居中显示
    show.legend = FALSE,
    align = TRUE       # 自动对齐角度
  ) +


  # 布局控制
  theme_void() +
  theme(
    legend.position = "bottom",
    aspect.ratio = 1  # 保持圆形
  )


# 显示图形
print(p)


# 保存(建议大尺寸画布)
ggsave("circular_tree_clean.png", p, 
       width = 10, height = 10,  # 增大画布解决边缘拥挤
       dpi = 600, bg = "white")
  • 发表于 3小时前
  • 阅读 ( 10 )
  • 分类:R

相关问题

0 条评论

请先 登录 后评论
Ti Amo
Ti Amo

59 篇文章

作家榜 »

  1. omicsgene 717 文章
  2. 安生水 357 文章
  3. Daitoue 167 文章
  4. 生物女学霸 120 文章
  5. xun 87 文章
  6. rzx 83 文章
  7. 红橙子 79 文章
  8. CORNERSTONE 72 文章