使用 ggboxplot 定位选定的 p 值

Positioning of selected p values using ggboxplot

我使用 mtcars 数据集作为示例 运行 下面的代码。

library(ggplot2)
library(ggpubr)
ggboxplot(mtcars, x = "cyl", y = "drat", fill = "cyl", 
          facet.by = "am", width = 0.5, outlier.shape = NA, 
          bxp.errorbar = TRUE, bxp.errorbar.width = 0.2) + 
  stat_compare_means(aes(label = ifelse(p < 1.e-4, 
                                        sprintf("p = %2.1e", as.numeric(..p.format..)), 
                                        sprintf("p = %5.4f", as.numeric(..p.format..)))), 
                     method = "wilcox.test", paired = FALSE)

我在修改它以实现以下目标时遇到了问题。在每个方面,我只想添加两个 wilcox.test p 值,一个将 cyl=4cyl=6 进行比较,一个将 cyl=4cyl=8 进行比较。然后,我希望每个 p 值分别位于 cyl=6cyl=8 框上方。

我喜欢使用ggsignif包,但我需要将这个例子外推到9个比较,这使得ggsignif不太适合(比较栏占用太多space) .

感谢您的任何建议。

您想将其他组与 "reference" 组进行比较,cyl=4。如果你使用 ref.group 参数到 stat_compare_means 它应该给你你想要的:

ggboxplot(mtcars, x = "cyl", y = "drat", fill = "cyl", 
          facet.by = "am", width = 0.5, outlier.shape = NA, 
          bxp.errorbar = TRUE, bxp.errorbar.width = 0.2) + 
    stat_compare_means(
        aes(label = ifelse(p < 1.e-4, 
                           sprintf("p = %2.1e", as.numeric(..p.format..)), 
                           sprintf("p = %5.4f", as.numeric(..p.format..)))), 
        ref.group = "4",
        method = "wilcox.test", paired = FALSE
    )