deepseek绘图之--系统发育树

Avatar
admin

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

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

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

初步构建绘图提示词

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

1. 树文件(NWK格式)

2. 样本分类文件

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

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

读取两个文件

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

树文件: fasttree.nwk

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

绘图工具: ggtree

图形类型:进化树

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

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

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

这样简单的就不需要了

初步生成绘图代码

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

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

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

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

最终绘图代码

# 加载必要的包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")