10分钟掌握microeco:从原始数据到发表级微生物相对丰度图全流程

10分钟掌握microeco:从原始数据到发表级微生物相对丰度图全流程

【免费下载链接】microeco An R package for data analysis in microbial community ecology 【免费下载链接】microeco 项目地址: https://gitcode.com/gh_mirrors/mi/microeco

你是否还在为微生物群落数据可视化而烦恼?尝试过多种工具却始终无法生成符合期刊要求的相对丰度图?本文将通过一个完整案例,展示如何使用microeco包在10分钟内从原始数据处理到绘制高质量分类群相对丰度图,解决分类群筛选、数据转换和多组比较可视化等核心痛点。

读完本文你将掌握:

  • microtable对象的高效构建与数据清洗
  • 灵活的分类群丰度筛选与转换技巧
  • 4种主流相对丰度图(堆叠柱状图/热图/箱线图/冲积图)的绘制方法
  • publication-ready图表的美化与导出技巧

一、microeco简介与环境准备

microeco(Microbial Community Ecology)是一个基于R语言的微生物群落数据分析包,旨在提供一站式微生物组数据分析解决方案。其核心优势在于:

  • 统一的数据管理系统(microtable对象)
  • 模块化的分析流程(转换-分析-可视化)
  • publication-ready的图表输出
  • 支持从OTU/ASV水平到种属水平的多级别分析

1.1 安装与加载

# 安装稳定版
install.packages("microeco")

# 或安装开发版
devtools::install_github("ChiLiubio/microeco")

# 加载必要包
library(microeco)
library(ggplot2)
library(RColorBrewer)

1.2 数据结构概览

microeco采用统一的microtable对象存储所有相关数据,其核心组件包括:

mermaid

二、数据准备与microtable对象构建

2.1 数据来源与格式要求

microeco支持多种输入格式,典型的微生物组数据应包含:

  • OTU/ASV丰度表(行为特征,列为样品)
  • 样品信息表(包含分组等 metadata)
  • 分类学注释表(包含各分类水平信息)

本文使用microeco内置的示例数据集,包含16S rRNA基因测序的土壤微生物数据:

# 加载内置数据集
data(dataset)
# 查看数据集结构
print(str(dataset))

2.2 构建microtable对象

# 从内置数据构建microtable对象
# dataset包含otu_table, sample_table, tax_table等组件
microtab <- dataset

# 或从外部文件构建(示例)
# otu_table <- read.csv("otu_table.csv", row.names = 1)
# sample_table <- read.csv("sample_table.csv", row.names = 1)
# tax_table <- read.csv("tax_table.csv", row.names = 1)
# microtab <- microtable$new(otu_table = otu_table, 
#                           sample_table = sample_table, 
#                           tax_table = tax_table)

2.3 数据预处理

# 数据清洗:移除线粒体和叶绿体序列
microtab$filter_pollution(taxa = c("mitochondria", "chloroplast"))

# 过滤低丰度特征:相对丰度<0.01%且出现频率<20%的OTU
microtab$filter_taxa(rel_abund = 0.0001, freq = 0.2)

# 计算各分类水平丰度(从门到属)
microtab$cal_abund()

# 查看可用的分类水平
print(names(microtab$taxa_abund))

三、trans_abund类:丰度转换与可视化核心

trans_abund类是microeco中负责分类群丰度转换和可视化的核心工具,其工作流程如下:

mermaid

3.1 创建trans_abund对象

# 创建trans_abund对象,聚焦于门水平(Phylum)的前10个优势分类群
trans_obj <- trans_abund$new(dataset = microtab, 
                             taxrank = "Phylum",  # 分类水平
                             ntaxa = 10,          # 选取前10个优势分类群
                             show = 0.01,         # 平均相对丰度阈值(1%)
                             use_percentage = TRUE)  # 以百分比显示

# 查看转换后的数据
head(trans_obj$data_abund)

关键参数说明:

参数描述示例
taxrank分类水平(需与tax_table列名对应)"Phylum", "Genus"
ntaxa选取的分类群数量10(默认)
show平均相对丰度阈值0.01(1%)
groupmean是否按组计算平均值"Group"(按Sample表中的Group列分组)
high_level更高分类水平(用于嵌套图例)"Phylum"(在属水平图中显示门信息)

四、四种主流相对丰度图绘制详解

4.1 堆叠柱状图(Stacked Bar Plot)

堆叠柱状图是展示不同样品/组中分类群相对丰度最常用的方法,特别适合比较组间差异。

# 基础堆叠柱状图(按Group分组)
p1 <- trans_obj$plot_bar(facet = "Group",  # 按Group列分面
                         xtext_keep = FALSE,  # 不显示x轴样品名
                         color_values = brewer.pal(10, "Paired"),  # 颜色方案
                         bar_full = TRUE)  # 包含"Others"类别使总和为100%

# 添加嵌套分类信息(需创建对象时指定high_level)
trans_obj2 <- trans_abund$new(dataset = microtab, 
                              taxrank = "Genus",  # 属水平
                              ntaxa = 15, 
                              high_level = "Phylum")  # 同时显示门水平信息

p2 <- trans_obj2$plot_bar(facet = "Group", 
                          ggnested = TRUE,  # 嵌套图例
                          high_level_add_other = TRUE)  # 每个门添加Others

# 保存图表
ggsave("stacked_barplot.pdf", p1, width = 10, height = 6, dpi = 300)
关键参数与个性化设置
  • facet: 分面参数,可指定Sample表中的列名,支持多级分面(如c("Group", "Site")
  • order_x: 自定义x轴样品顺序,如order_x = c("S1", "S3", "S2")
  • use_alluvium: 添加冲积图连接线,展示分类群在样品间的流动
  • sample_plot: 添加样品属性热图,如sample_plot = c("pH", "Temperature")
# 高级示例:带样品属性热图的堆叠柱状图
p3 <- trans_obj$plot_bar(facet = "Group",
                         sample_plot = c("pH", "Organic_matter"),  # 样品属性
                         sample_plot_color = list(pH = c("blue", "red"),  # 颜色映射
                                                 Organic_matter = c("yellow", "brown")),
                         sample_plot_mainnames = FALSE)  # 不在主图显示样品名

4.2 热图(Heatmap)

热图适合展示较多分类群在样品中的分布模式,常结合聚类分析展示样品或分类群间的相似性。

# 创建聚焦于属水平的trans_abund对象
trans_genus <- trans_abund$new(dataset = microtab, 
                               taxrank = "Genus", 
                               ntaxa = 30,  # 更多分类群
                               show = 0.005)  # 降低丰度阈值

# 基础热图
p_heatmap <- trans_genus$plot_heatmap(
    facet = "Group",  # 按Group分面
    plot_colorscale = "log10",  # 对数刻度(适合丰度差异大的数据)
    xtext_angle = 45,  # x轴标签旋转45度
    color_values = rev(brewer.pal(11, "RdYlBu")),  # 颜色方案
    clustering = TRUE)  # 样品聚类

# 保存热图
ggsave("heatmap.pdf", p_heatmap, width = 12, height = 10, dpi = 300)
热图高级应用
  • 自定义聚类方法
# 使用pheatmap包绘制热图(支持更多聚类选项)
p_pheatmap <- trans_genus$plot_heatmap(pheatmap = TRUE,
                                      scale = "row",  # 行标准化
                                      treeheight_row = 10,
                                      treeheight_col = 10)
  • 结合系统发育关系
# 需要先计算系统发育距离
microtab$cal_betadiv(method = "wunifrac")
# 在热图中按系统发育关系排序分类群

4.3 箱线图(Box Plot)

箱线图适合展示不同组别间特定分类群的丰度分布差异,便于统计比较。

# 选择特定分类群(如变形菌门Proteobacteria)
trans_specific <- trans_abund$new(dataset = microtab,
                                 taxrank = "Phylum",
                                 input_taxaname = "Proteobacteria")  # 指定分类群名称

# 绘制箱线图
p_box <- trans_specific$plot_box(
    group = "Group",  # 分组列
    add_jitter = TRUE,  # 添加散点
    jitter_width = 0.2,
    fill_color = brewer.pal(5, "Set2"),
    add_stat = TRUE,  # 添加统计显著性标记
    comparisons = list(c("CK", "N"), c("CK", "P"), c("N", "NP")))  # 比较组

# 保存箱线图
ggsave("boxplot.pdf", p_box, width = 8, height = 6, dpi = 300)

4.4 冲积图(Alluvial Plot)

冲积图(也称桑基图)适合展示分类群在不同分组/时间点之间的丰度流动和变化。

# 创建包含时间序列数据的trans_abund对象
# 假设Sample表中有Time列表示采样时间
trans_time <- trans_abund$new(dataset = microtab,
                             taxrank = "Phylum",
                             ntaxa = 8,
                             groupmean = "Time")  # 按时间分组计算平均值

# 绘制冲积图
p_alluvium <- trans_time$plot_bar(use_alluvium = TRUE,  # 启用冲积图模式
                                 facet = "Group",
                                 color_values = brewer.pal(8, "Set1"),
                                 xtext_angle = 0)

# 保存冲积图
ggsave("alluvium_plot.pdf", p_alluvium, width = 12, height = 8, dpi = 300)

五、图表美化与个性化调整

5.1 颜色方案优化

# 自定义颜色向量
my_colors <- c("#E41A1C", "#377EB8", "#4DAF4A", "#984EA3", 
               "#FF7F00", "#FFFF33", "#A65628", "#F781BF")

# 应用于图表
p <- trans_obj$plot_bar(color_values = my_colors,
                       others_color = "grey80")  # "Others"类颜色

5.2 字体与标签调整

# 统一设置中文字体(解决中文显示问题)
theme_set(theme_bw(base_family = "SimHei"))

# 调整标签和标题
p <- p + labs(title = "不同处理组的微生物群落组成(门水平)",
             x = "处理组",
             y = "相对丰度 (%)",
             fill = "门水平分类群") +
  theme(plot.title = element_text(hjust = 0.5, size = 16, face = "bold"),
        legend.title = element_text(size = 14),
        legend.text = element_text(size = 12),
        axis.text.x = element_text(size = 12),
        axis.text.y = element_text(size = 12),
        axis.title = element_text(size = 14))

5.3 多图组合

library(patchwork)

# 组合不同图表
combined_plot <- p1 + p_heatmap + plot_layout(ncol = 1, heights = c(1, 1.5))

# 添加共同标题
combined_plot + plot_annotation(title = "微生物群落组成分析",
                               theme = theme(plot.title = element_text(hjust = 0.5, size = 18)))

六、案例:从原始数据到发表级图表的完整流程

以下是一个从原始OTU表开始,到生成发表级相对丰度图的完整案例:

# 1. 加载数据并创建microtable对象
otu_table <- read.csv("otu_table.csv", row.names = 1)
sample_table <- read.csv("sample_table.csv", row.names = 1)
tax_table <- read.csv("tax_table.csv", row.names = 1)

microtab <- microtable$new(otu_table = otu_table,
                          sample_table = sample_table,
                          tax_table = tax_table,
                          auto_tidy = TRUE)

# 2. 数据预处理
microtab$filter_pollution(taxa = c("mitochondria", "chloroplast"))  # 移除污染序列
microtab$filter_taxa(rel_abund = 0.001, freq = 0.2)  # 过滤低丰度和低出现频率OTU
microtab$rarefy_samples(sample.size = min(microtab$sample_sums()))  # 稀释至最小测序深度
microtab$cal_abund()  # 计算各分类水平丰度

# 3. 创建trans_abund对象(属水平,显示门水平信息)
trans_genus <- trans_abund$new(dataset = microtab,
                              taxrank = "Genus",
                              ntaxa = 15,
                              high_level = "Phylum",  # 嵌套门水平信息
                              groupmean = "Group")  # 按组计算平均值

# 4. 绘制嵌套图例的堆叠柱状图
p_final <- trans_genus$plot_bar(facet = "Group",
                               ggnested = TRUE,  # 嵌套图例
                               color_values = colorRampPalette(brewer.pal(12, "Paired"))(15),
                               xtext_keep = FALSE,
                               barwidth = 0.7) +
  theme(legend.key.size = unit(0.8, "cm"),
        legend.text = element_text(size = 10),
        strip.text = element_text(size = 12))

# 5. 保存高清图表
ggsave("final_figure.pdf", p_final, width = 10, height = 7, dpi = 600)
ggsave("final_figure.png", p_final, width = 10, height = 7, dpi = 600)

七、常见问题与解决方案

7.1 数据格式问题

问题:创建microtable对象时出现"样本名不匹配"错误
解决方案

# 确保otu_table列名与sample_table行名一致
common_samples <- intersect(colnames(microtab$otu_table), rownames(microtab$sample_table))
microtab$otu_table <- microtab$otu_table[, common_samples]
microtab$sample_table <- microtab$sample_table[common_samples, ]
microtab$tidy_dataset()  # 自动整理数据

7.2 分类群名称问题

问题:分类群名称包含"__"前缀(如"g__Lactobacillus")
解决方案

# 创建trans_abund对象时自动移除前缀
trans_obj <- trans_abund$new(dataset = microtab,
                            taxrank = "Genus",
                            delete_taxonomy_prefix = TRUE,  # 移除前缀
                            prefix = "g__")  # 指定前缀模式

7.3 图表美化问题

问题:中文标签显示为乱码
解决方案

# 设置中文字体
library(showtext)
showtext_auto(enable = TRUE)
font_add("SimHei", "SimHei.ttf")  # 添加系统中的中文字体
theme_set(theme_bw(base_family = "SimHei"))

八、总结与进阶学习

本文详细介绍了使用microeco包绘制微生物相对丰度图的完整流程,包括数据准备、对象创建、图表绘制和美化。通过掌握这些技能,你可以快速生成符合发表要求的微生物群落组成可视化结果。

进阶学习资源:

  1. 官方文档与教程

  2. 高级分析功能

    • 功能预测(trans_func)
    • 网络分析(trans_network)
    • 差异分析(trans_diff)
  3. 扩展应用

    • 结合ggplot2进行深度自定义
    • 多组学数据整合分析
    • 时空动态分析与建模

希望本文能帮助你更高效地进行微生物群落数据分析与可视化。如有任何问题,欢迎在GitHub仓库提交issue或参与讨论。

提示:本文代码已在microeco v0.17.0版本测试通过。不同版本间可能存在参数差异,请参考对应版本的官方文档。

【免费下载链接】microeco An R package for data analysis in microbial community ecology 【免费下载链接】microeco 项目地址: https://gitcode.com/gh_mirrors/mi/microeco

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值