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

使用rstatix包为ggplot堆叠柱状图添加多组两两检验p值

报错原因

add_y_position()调用失败是两个参数错误导致的:

  1. 没有传入绘图所用的原始数据集RDT_genus_ratio
  2. formula参数格式错误,要求填写的是「响应变量~分组变量」(对应ggplot中y和x的映射关系),不是检验结果里的group1 ~ group2

解法1:手动添加p值位置(更适配百分比堆叠图场景)

你做的是百分比堆叠柱状图,y轴范围固定为0-1,直接手动给检验结果加y.position列更简单,还可以自定义间距避免p值重叠:

# 生成两两fisher检验结果后直接加高度列
asdf <- table(RDT_genus_ratio$Ag_RDT, RDT_genus_ratio$Genus_Cytb) %>%
  pairwise_fisher_test() %>%
  # 三个比较的高度依次错开,数值可根据你的显示需求调整
  mutate(y.position = c(1.05, 1.15, 1.25))

之后直接把asdf传给add_pvalue即可,支持自定义显示格式:

# 显示校正后p值
RDT_genus_ratio_bar +
  add_pvalue(asdf, label = "p.adj = {p.adj}")

# 仅显示显著性星号,去掉括号
# RDT_genus_ratio_bar +
#  add_pvalue(asdf, label = "{p.adj.signif}", remove.bracket = TRUE)

解法2:正确调用add_y_position()自动计算位置

如果需要自动生成p值位置,按如下格式传参即可:

asdf <- table(RDT_genus_ratio$Ag_RDT, RDT_genus_ratio$Genus_Cytb) %>%
  pairwise_fisher_test() %>%
  add_y_position(
    # 传入原始数据集
    data = RDT_genus_ratio,
    # 公式格式:任意数值列~分组列,这里把二分类的Ag_RDT转成数值即可
    formula = as.numeric(Ag_RDT) ~ Genus_Cytb,
    # 可选参数:调整p值之间的高度差
    step.increase = 0.05
  )

之后再传入add_pvalue即可正常使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:36:04