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

R语言ggplot绘制分面箱线图时geom_signif出现未知美学参数警告

警告触发原因

geom_signif的参数分为两类:需要从传入数据中映射变量的参数(xmin、xmax)需放在aes()内部,而annotations、y_position、map_signif_level属于图层全局配置参数,不能放入aes(),否则会被识别为未知美学映射,导致配置不生效同时触发警告。

p值过高说明

你提供的测试数据中,多数Soll分组下仅包含1-2个Entfernung分组的观测值,样本量不足导致统计检验无法得到显著性结果,替换为全量真实数据后该问题会自然解决。

修正后可运行代码

library(tidyverse)
library(ggsignif)
library(ggpubr)

# 生成标注数据,可自定义显著性星号规则
anno_df <- compare_means(DGUnkraut ~ Entfernung, group.by = "Soll", data = veg_un, p.adjust.method = "holm") %>%
  mutate(
    # 可自定义不同分面的标记高度,避免重叠
    y_pos = 6,
    # 生成显著性标记,也可直接使用p.adj显示数值
    sig_label = case_when(
      p.adj < 0.001 ~ "***",
      p.adj < 0.01 ~ "**",
      p.adj < 0.05 ~ "*",
      TRUE ~ "ns"
    )
  )

ggplot(veg_un, aes(x=Entfernung, y=DGUnkraut)) + 
  geom_boxplot(position=position_dodge()) + 
  geom_point(aes(color=Entfernung), position=position_jitterdodge(jitter.width = 0.2)) + 
  facet_wrap(~Soll) + 
  theme_minimal() +
  ggsignif::geom_signif(
    inherit.aes = FALSE,
    data = anno_df, 
    # 仅映射变量放入aes
    aes(xmin = group1, xmax = group2),
    # 全局参数放在aes外
    annotations = anno_df$sig_label,
    y_position = anno_df$y_pos,
    manual = TRUE
  )

额外优化建议

  • 如果需要显示p值而非显著性星号,将annotations参数取值替换为format.pval(anno_df$p.adj, digits = 2)即可
  • 若只想在有显著性的分面显示标记,可在生成anno_df时过滤掉p.adj > 0.05的行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:54:11