美文网首页
根据分组文件对进化树着色R代码

根据分组文件对进化树着色R代码

作者: 九月_1012 | 来源:发表于2024-10-20 17:41 被阅读0次

输入文件1:nwk文件;
输入文件2:两列的分组文件


分组文件示例
library(readxl)
library(ggplot2)
library(ggtree)
library(treeio)
library(ggtreeExtra)
library(ggnewscale)
library(ape)
library(dplyr)
library(scales)

setwd("C:/Users/Desktop/")
tr1 <- read.tree("test.nwk")
tr1 <- unroot(tr1)

df <- read.table("group.xls", header = TRUE, sep = "\t")
# 使用 split 函数按 GroupID 分组
grouped_labels <- split(df$Label, df$GroupID)
# 计算每个分组的标签数量
group_counts <- sapply(grouped_labels, length)
# 按标签数量对分组进行排序
sorted_groups <- names(sort(group_counts, decreasing = TRUE))
# 重新创建分组信息,确保按照排序后的顺序
sorted_grouped_labels <- lapply(sorted_groups, function(g) grouped_labels[[g]])
names(sorted_grouped_labels) <- sorted_groups

# 根据分组信息对树进行分组
grouped_tree <- groupOTU(tr1, sorted_grouped_labels)
# 指定前5个分组的颜色
specified_colors <- c("pink", "blue", "lightgreen", "orange", "purple")
# 使用hue_pal()生成其他颜色
hue_colors <- hue_pal()(length(sorted_groups) - length(specified_colors))

# 创建颜色向量
all_colors <- c(specified_colors, hue_colors)

# 使用ggtree包绘制无根扇形进化树,并按照分组信息自动上色
p <- ggtree(grouped_tree, layout="unrooted", branch.length=‘none’,  aes(color=group)) +  
  geom_tree(size=0.1) +  # 调整线条粗细
  scale_color_manual(name="Groups", values=setNames(all_colors, sorted_groups),breaks=sorted_groups) +  # 指定颜色并按照排序后的分组顺序显示图例
  theme(legend.position="right",  # 控制图例的位置
        legend.title=element_text(size=8),  # 图例标题大小
        legend.text=element_text(size=6),  # 图例文字大小
        legend.key.size=unit(0.2, "cm"),
        legend.position.inside = c(0.8, 0.2),
        plot.margin=unit(c(0.1, 0.1, 0.1, 0.1), "cm"))+
  guides(color = guide_legend(ncol = 3))  # 调整图形的边距)  # 图例键的大小
print(p)
# 保存为PNG文件
ggsave(filename="final_tree_plot.png", plot=p, width=10, height=8, dpi=300)

# 保存为PDF文件
ggsave(filename="final_tree_plot.pdf", plot=p, width=10, height=8)

相关文章

  • ggtree绘制进化树

    文件说明:tree.tre : 进化树文件 group.info : 分组信息

  • R语言ggplot2作图如何去掉图例中的NA

    遇到这个问题是在使用ggtree可视化展示进化树的时候,我想给进化树的枝分组映射颜色 第一步是准备进化树文件 第二...

  • RMarkdown基础知识

    RMD方便整理笔记、输出代码,和.R文件不同,可以视为高级脚本 一、RMD组成 RMD由三部分组成:头文件、代码块...

  • 使用iTOL美化进化树

    小编之前写过一篇使用“ggtree" 快速美化进化树的文章(使用ggtree对进化树进行分组美化 - 简书),但是...

  • 四:GLSL图片&颜色混合

    效果图如下: 顶点着色器文件(shaderv.glsl)代码如下: 片元着色器文件(shaderf.glsl)代码...

  • 13-2.GLSL-分屏滤镜案例

    准备工作 创建项目,编写着色器文件(着色器代码在上一章<13-1.GLSL-分屏滤镜分析>中可以找到)着色器文件 ...

  • OpenGl ES GSLS代码笔记

    OpenGl ES GLSL代码 主要是用于编程顶点着色器和片元着色器的代码 它可以是以任意后缀的文件名的文件。但...

  • 用ggtree和ggimage对nwk进化树进行美化 2020-

    一、对做好的nwk进化树进行簇标注、分组和美化: ggtree教程参考网址: http://yulab-smu.t...

  • OpenGL ES 使用自定义着色器绘制图片

    自定义着色器 顶点着色器 新建一个以.vsh结尾的文件,在文件中编写一下代码。注意:因为文件中的代码本身是字符串的...

  • 七:GLSL灰度,翻转,马赛克滤镜

    默认 顶点着色器代码: 片元着色器代码: 灰度滤镜 顶点着色器代码不变,片元着色器代码: 颠倒滤镜 顶点着色器代码...

网友评论

      本文标题:根据分组文件对进化树着色R代码

      本文链接:https://www.haomeiwen.com/subject/xohkdjtx.html