Отображение p-значений с помощью ggpubr в сгруппированном графике приводит к ошибке
Я готовлю grouped dotplot
с ggplot2, который работает нормально. Но если я использую stat_compare_means
от ggpubr
пакет для добавления значения p, он не будет работать. Когда я использую compare_means
за пределами графического окружения все работает нормально и я получаю правильный p-values
с набором данных (используя compare_means(X1 ~ X5, data=titer_lung, method="t.test"
).
Я использую следующие данные:
> titer_lung
X1 X2 X3 X4 X5
1 4.531479 NK mutIRFE_FB Lunge group1
2 4.068186 NK mutIRFE_FB Lunge group1
3 4.071882 NK mutIRFE_FB Lunge group1
4 4.117271 NK mutIRFE_FB Lunge group1
5 4.117271 NK mutIRFE_FB Lunge group1
6 4.462398 -NK mutIRFE_FB Lunge group2
7 4.643453 -NK mutIRFE_FB Lunge group2
8 4.556303 -NK mutIRFE_FB Lunge group2
9 4.724276 -NK mutIRFE_FB Lunge group2
10 4.491362 -NK mutIRFE_FB Lunge group2
11 3.903090 NK mutIRFErev_FB Lunge group3
12 4.342423 NK mutIRFErev_FB Lunge group3
13 4.113943 NK mutIRFErev_FB Lunge group3
14 4.653213 NK mutIRFErev_FB Lunge group3
15 4.230449 NK mutIRFErev_FB Lunge group3
16 4.556303 -NK mutIRFErev_FB Lunge group4
17 4.462398 -NK mutIRFErev_FB Lunge group4
18 4.230449 -NK mutIRFErev_FB Lunge group4
19 NA -NK mutIRFErev_FB Lunge group4
20 4.591065 -NK mutIRFErev_FB Lunge group4
21 4.230449 NK d3IDE mutIRFE Lunge group5
22 4.531479 NK d3IDE mutIRFE Lunge group5
23 4.812913 NK d3IDE mutIRFE Lunge group5
24 4.544068 NK d3IDE mutIRFE Lunge group5
25 4.342423 NK d3IDE mutIRFE Lunge group5
26 4.380211 -NK d3IDE mutIRFE Lunge group6
27 4.698970 -NK d3IDE mutIRFE Lunge group6
28 4.716003 -NK d3IDE mutIRFE Lunge group6
29 4.477121 -NK d3IDE mutIRFE Lunge group6
30 4.740363 -NK d3IDE mutIRFE Lunge group6
31 4.255273 NK d3IDE mutIRFErev Lunge group7
32 4.322219 NK d3IDE mutIRFErev Lunge group7
33 4.113943 NK d3IDE mutIRFErev Lunge group7
34 4.176091 NK d3IDE mutIRFErev Lunge group7
35 4.518514 NK d3IDE mutIRFErev Lunge group7
36 4.724276 -NK d3IDE mutIRFErev Lunge group8
37 4.462398 -NK d3IDE mutIRFErev Lunge group8
38 4.785330 -NK d3IDE mutIRFErev Lunge group8
39 4.431364 -NK d3IDE mutIRFErev Lunge group8
40 4.826075 -NK d3IDE mutIRFErev Lunge group8
И используя следующий код, я получаю график, который я ищу:
titer_plot <- ggplot(titer_lung, aes(y=titer_lung$X1, x=titer_lung$X3,
fill=titer_lung$X2)) +
geom_dotplot(aes(fill = titer_lung$X2, color = titer_lung$X2),
trim = FALSE,
binaxis='y', stackdir='center', dotsize = 0.8,
position = position_dodge(0.8)
)+
stat_summary(fun.y = median, fun.ymin = median, fun.ymax = median,
geom = "crossbar", width = 0.5, position = position_dodge(0.8)) +
scale_fill_manual(values = c("black", "white"))+
scale_color_manual(values = c("black", "black"))+
xlab("")+
ylab(expression('Viral titer/organ [log '[10]*']'))+
theme_classic()+
theme(text = element_text(size=10),
axis.text.x = element_text(size=10, angle = 90, hjust=1),
axis.text.y = element_text(size=10),
axis.title.y = element_text(size=10), legend.text = element_text(size=10),
legend.title=element_blank())+
titer_plot
Когда я хочу сравнить group1 с group2 и group3 с group4, я пишу:
my_comparisons <- list(c("group1","group2"),c("group3","group4"))
titer_plot + stat_compare_means(comparisons=my_comparisons, label.y=0,
method = "t.test")
Но тогда я получаю следующую ошибку:
Удалены 1 строка, содержащая неконечные значения (stat_signif).
Вычисление не удалось вstat_signif()
: пропущенное значение, где требуется ИСТИНА / ЛОЖЬ
Я думаю, что это не должно иметь проблемы с NA
значения, так как compare_means
тоже не беспокоит.
Я очень рад каждой помощи, спасибо!!!
1 ответ
Проблема в том, что не знает, где поставить скобки (x-координаты)
Сравнения: список векторов длины 2. Записи в векторе - это либо имена 2 значений на оси x, либо 2 целых числа, которые соответствуют индексу групп, представляющих интерес, для сравнения.
titer_plot + stat_compare_means(aes(group=X2), method = "t.test",) #specify the groups specifically
label.y=5
Я понятия не имею, как это преодолеть, но основной geom_signif
имеет "ручной" аргумент. Итак, я думаю, вы могли бы как-то предоставить вывод compare_means(X1 ~ X5, data=titer_lung, method="t.test")
к этому geom.
Вы также можете рассмотреть возможность иметь 8 записей на оси X
ggplot(titer_lung, aes(y=X1, x=paste(X3,X2), fill=X2)) + ...
my_comparisons <- list(c("mutIRFE_FB -NK","mutIRFE_FB NK"),
c("mutIRFErev_FB -NK","mutIRFErev_FB NK"),
c("d3IDE mutIRFE -NK","d3IDE mutIRFE NK"),
c("d3IDE mutIRFErev -NK","d3IDE mutIRFErev NK"))
titer_plot + stat_compare_means(comparisons=my_comparisons, label.y=5,
method = "t.test")