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

如何自动化执行dunn_test与ggboxplot绘制流程?

自动化循环处理多样性指标的Dunn检验与箱线图绘制

前置准备

先确保安装并加载所需的R包:

install.packages(c("ggpubr", "FSA"))
library(ggpubr)
library(FSA)

核心实现代码

# 定义需要批量处理的多样性指标列名
metrics <- c("Observed", "Shannon", "InvSimpson", "Evenness")

# 创建列表统一存储检验结果和绘图对象(避免环境变量混乱)
test_results <- list()
boxplot_objects <- list()

# 循环遍历每个指标
for (metric in metrics) {
  # 1. 执行Dunn事后检验,动态生成公式
  dunn_res <- dunn_test(
    df, 
    formula = as.formula(paste(metric, "~ Month")),
    p.adjust.method = "fdr"  # 可根据需求调整校正方法,如"bonferroni"
  )
  
  # 2. 添加显著性标记的坐标位置
  xy_pos <- add_xy_position(dunn_res, x = "Month", y = metric)
  
  # 3. 绘制带显著性标记的箱线图
  bp_plot <- ggboxplot(
    df, x = "Month", y = metric,
    fill = "Month", palette = "jco",  # 可自定义配色
    outlier.shape = 1
  ) +
    stat_pvalue_manual(xy_pos, label = "p.adj.signif", tip.length = 0.01) +
    labs(title = paste(metric, "指数月度分布"), y = metric, x = "月份") +
    theme_minimal()
  
  # 4. 存储结果到列表
  test_results[[metric]] <- dunn_res
  boxplot_objects[[metric]] <- bp_plot
  
  # 可选:导出每个指标的检验结果为单独CSV文件
  write.csv(dunn_res, paste0(metric, "_dunn检验结果.csv"), row.names = FALSE)
  
  # 可选:保存箱线图为图片文件
  ggsave(paste0(metric, "_月度箱线图.png"), bp_plot, width = 8, height = 6, dpi = 300)
}

关键细节说明

  • 动态公式生成:as.formula(paste(metric, "~ Month"))自动为每个指标构建检验公式,彻底避免重复代码
  • 结果统一管理:用列表test_results和boxplot_objects存储所有结果,后续可通过test_results[["Shannon"]]快速调用指定指标的检验结果
  • 自定义调整:可根据需求修改检验的校正方法、箱线图的配色/主题、显著性标签格式(比如用label = "p.adj"显示校正后p值而非显著性标记)
  • 数据预处理:如果Month列是字符型,建议先转为因子并指定顺序(如df$Month <- factor(df$Month, levels = c("1月", "2月", ...))),避免绘图时x轴顺序混乱

内容的提问来源于stack exchange,提问作者sophiethomas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 06:02:41