如何用fantaxtic按丰度过滤分类群并绘制嵌套分类柱状图?
使用fantaxtic绘制门-属层级柱状图并按丰度过滤
核心结论
完全可行。fantaxtic支持按丰度筛选分类群,且能实现门级展示+下属属级(丰度>2%)、其余归为Others的需求。你提到的get_top_taxa确实已被弃用,需用替代方法实现筛选。
实现步骤
1. 丰度筛选与分类群合并
从属级数据中筛选丰度>2%的类群,剩余属归到对应门的"Others"类别,可通过自定义逻辑处理:
# 假设你的phyloseq对象为glom_genus(属级聚合后的数据) # 转换为相对丰度(百分比) glom_genus_rel <- transform_sample_counts(glom_genus, function(x) x/sum(x)*100) # 计算每个属的总相对丰度,筛选丰度>2%的属 taxa_abund <- taxa_sums(glom_genus_rel) top_genera <- names(taxa_abund[taxa_abund > 2]) # 构建新分类表:丰度达标属保留原名,其余替换为「门名_Others」 new_tax <- tax_table(glom_genus_rel) new_tax[, "Genus"] <- ifelse(rownames(new_tax) %in% top_genera, new_tax[, "Genus"], paste0(new_tax[, "Phylum"], "_Others")) # 更新phyloseq对象的分类信息 tax_table(glom_genus_rel) <- new_tax
2. 绘制层级柱状图
使用plot_taxa_abundance函数,指定门和属的层级关系即可:
library(fantaxtic) plot_taxa_abundance(glom_genus_rel, tax_levels = c("Phylum", "Genus"), # 设定展示层级:门→属 fill_by = "Genus", # 按属填充颜色区分 relative_abundance = TRUE) # 确保展示相对丰度
3. 弃用函数的替代方案
原get_top_taxa已被taxa_top替代,若需按累积丰度筛选类群,可使用:
# 筛选累积丰度占98%的类群(对应原代码逻辑) top_taxa <- taxa_top(glom_genus_rel, 0.98)
但针对你的2%阈值需求,直接用第一步的自定义筛选逻辑更贴合。
注意事项
- 若需按样本平均丰度筛选,将
taxa_sums替换为rowMeans(otu_table(glom_genus_rel))即可。 - 给Others绑定门名(如
Proteobacteria_Others),可避免不同门的Others混淆。
内容的提问来源于stack exchange,提问作者user1892205
相关产品推荐
相关产品推荐

