R 在没有原始数据的情况下,如何计算ggplots显著性括号的y、xmin和xmax位置?

R 在没有原始数据的情况下,如何计算ggplots显著性括号的y、xmin和xmax位置?,r,ggpubr,significance,rstatix,R,Ggpubr,Significance,Rstatix,我试图在一系列分组图中添加重要括号,如下图: 我正在寻找一种解决方案,我可以使用只包含分析结果的数据框添加显著性括号和p值,因为我无法访问原始数据。我正在做数百个这样的绘图,因此我正在寻找一种解决方案,它不依赖于手动指定每个绘图的重要性括号的x和y坐标 我已经尝试在rstatix包中使用一些函数(如下指定)来尝试并计算显著性括号的y、xmin和xmax值,这样我就可以使用包ggpubr中的函数将括号和显著性级别添加到绘图中,但我没有成功 我怀疑这些函数的数据格式不正确,或者使用的函数不正确。我

我试图在一系列分组图中添加重要括号,如下图:

我正在寻找一种解决方案,我可以使用只包含分析结果的数据框添加显著性括号和p值,因为我无法访问原始数据。我正在做数百个这样的绘图,因此我正在寻找一种解决方案,它不依赖于手动指定每个绘图的重要性括号的x和y坐标

我已经尝试在
rstatix
包中使用一些函数(如下指定)来尝试并计算显著性括号的y、xmin和xmax值,这样我就可以使用包
ggpubr
中的函数将括号和显著性级别添加到绘图中,但我没有成功

我怀疑这些函数的数据格式不正确,或者使用的函数不正确。我不太清楚到底是什么问题,所以非常感谢您的帮助

我查阅了以下网页:

以及我上面提到的函数的R文档,但还不能解决这个问题


下面是一个可复制的示例来说明发生了什么:

library(dplyr)
library(ggplot2)
library(ggsignif)
library(rstatix)
下面是一些伪数据,它们反映了我正在使用的数据帧:

dataGlobal <- data.frame(
  subpopulationGroup = factor(c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C')),
  responseOption = factor(c('option 1', 'option 2', 'option 3', 'option 4', 'option 1', 'option 2', 'option 3', 'option 4', 'option 1', 'option 2', 'option 3', 'option 4')),
  mean = c(16, 10, 55, 20, 23, 16, 42, 19, 29, 11, 44, 16),
  lowerCI = c(12, 7, 50, 16, 18, 11, 36, 15, 25, 9, 39, 13),
  upperCI = c(20, 13, 60, 24, 29, 21, 49, 25, 34, 14, 48, 20)
)

dataDifferences <- data.frame(
  responseOption = factor(c('option 1', 'option 2', 'option 3', 'option 4', 'option 1', 'option 2', 'option 3', 'option 4', 'option 1', 'option 2', 'option 3', 'option 4')),
  .y. = c('mean', 'mean', 'mean', 'mean', 'mean', 'mean', 'mean', 'mean', 'mean', 'mean', 'mean', 'mean'),
  group1 = factor(c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'A', 'A', 'A', 'A')),
  group2 = factor(c('B', 'B', 'B', 'B', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C')),
  n1 = c(431, 299, 799, 367, 431, 299, 799, 367, 517, 314, 1818, 643),
  n2 = c(517, 314, 1818, 643, 789, 292, 1176, 437, 789, 292, 1176, 437), 
  group1UpperCI = c(20, 13, 60, 24, 29, 21, 49, 25, 20, 13, 60, 24), 
  group2UpperCI = c(29, 21, 49, 25, 34, 14, 48, 20, 34, 14, 48, 20),
  statistic = c(3.864, 4.132, 8.973, 0.002, 3.041, 2.738, 0.134, 0.907, 20.890, 0.412, 10.861, 1.577),
  df = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 
  p = c(0.050, 0.043, 0.003, 0.958, 0.091, 0.076, 0.714, 0.330, 0.001, 0.002, 0.209, 0.528)
)

由于
get_y_position()
没有参数“test”,我想我至少可以得到y坐标值:

dataCoordinatesY <- get_y_position(data = dataGlobal, 
                          formula = mean ~ subpopulationGroup,
                          fun = 'mean_ci',
                          comparisons = list(c('A', 'B'),
                                             c('B', 'C'),
                                             c('A', 'C'))
                 )
dataCoordinatesY <- get_y_position(data = dataGlobal, 
                          formula = mean ~ subpopulationGroup,
                          fun = 'mean_ci',
                          comparisons = list(c('A', 'B'),
                                             c('B', 'C'),
                                             c('A', 'C'))
                 )
barPlot <- dataGlobal %>% 
  ggplot(aes(responseOption, 
             mean, 
             fill = subpopulationGroup)) +
  geom_col(width = 0.8, 
           position = position_dodge(width = 0.8)) +
  geom_errorbar(aes(ymin = lowerCI, ymax = upperCI), 
                width = 0.1, 
                colour = 'black', 
                position = position_dodge(width = 0.8)) +
  geom_signif(annotations = c('*', '*', '**', '***', '**'),
              y_position = c(32, 24, 63, 37, 28),
              xmin = c(0.73, 1.73, 2.73, 0.73, 1.73),
              xmax = c(1, 2, 3, 1.27, 2.27))