R 在没有原始数据的情况下,如何计算ggplots显著性括号的y、xmin和xmax位置?
我试图在一系列分组图中添加重要括号,如下图: 我正在寻找一种解决方案,我可以使用只包含分析结果的数据框添加显著性括号和p值,因为我无法访问原始数据。我正在做数百个这样的绘图,因此我正在寻找一种解决方案,它不依赖于手动指定每个绘图的重要性括号的x和y坐标 我已经尝试在R 在没有原始数据的情况下,如何计算ggplots显著性括号的y、xmin和xmax位置?,r,ggpubr,significance,rstatix,R,Ggpubr,Significance,Rstatix,我试图在一系列分组图中添加重要括号,如下图: 我正在寻找一种解决方案,我可以使用只包含分析结果的数据框添加显著性括号和p值,因为我无法访问原始数据。我正在做数百个这样的绘图,因此我正在寻找一种解决方案,它不依赖于手动指定每个绘图的重要性括号的x和y坐标 我已经尝试在rstatix包中使用一些函数(如下指定)来尝试并计算显著性括号的y、xmin和xmax值,这样我就可以使用包ggpubr中的函数将括号和显著性级别添加到绘图中,但我没有成功 我怀疑这些函数的数据格式不正确,或者使用的函数不正确。我
rstatix
包中使用一些函数(如下指定)来尝试并计算显著性括号的y、xmin和xmax值,这样我就可以使用包ggpubr
中的函数将括号和显著性级别添加到绘图中,但我没有成功
我怀疑这些函数的数据格式不正确,或者使用的函数不正确。我不太清楚到底是什么问题,所以非常感谢您的帮助
我查阅了以下网页:
下面是一个可复制的示例来说明发生了什么:
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))