You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 15:54:57