修改统计表格后在ggplot箱线图添加显著性水平报错
问题原因
报错的核心原因是stat_value2在执行group_by(group1) %>% slice_head(n=1)后仍保持分组状态,而ggpubr::stat_pvalue_manual无法正确处理分组格式的数据,导致内部mutate操作时出现维度不匹配问题。
解决方案
在生成stat_value2后添加ungroup(),将分组数据转换为普通数据框:
stat_value2 <- stat_pvalue %>% group_by(group1) %>% slice_head(n=1) %>% ungroup() # 关键步骤:取消分组
之后再运行绘图代码即可正常生成带显著性标记的箱线图。
额外优化建议(贴合你的需求)
你提到要保留彼此最接近的显著对比组,建议先按rating均值重新排序lang2的因子水平,确保后续筛选的是相邻组间的显著差异:
- 先重新排序因子:
library(forcats) pl <- pl %>% mutate(lang2 = fct_reorder(lang2, rating, .fun = mean)) # 按rating均值排序lang2
- 重新计算统计量并筛选:
stat_pvalue <- pl %>% rstatix::wilcox_test(rating ~ lang2) %>% filter(p < 0.001) %>% rstatix::add_significance("p") %>% rstatix::add_y_position(fun="mean") %>% mutate(y.position = seq(min(y.position), max(y.position), length.out = n())) stat_value2 <- stat_pvalue %>% group_by(group1) %>% slice_head(n=1) %>% ungroup()
这样筛选出的对比组会是每个水平与均值最接近的显著相邻组,可视化效果更合理。
内容的提问来源于stack exchange,提问作者Tine Moos
相关产品推荐
相关产品推荐

