使用rstatix包为ggplot堆叠柱状图添加多组两两检验p值
报错原因
add_y_position()调用失败是两个参数错误导致的:
- 没有传入绘图所用的原始数据集
RDT_genus_ratio - 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
相关产品推荐
相关产品推荐

