из виньетки ggsignif
(см. ??ggsignif
) Я понимаю, что для слоев, которые используют position='dodge'
(что имеет место для ваших коробок, поскольку у вас есть группировка с взаимосвязью), вам нужно будет предоставить положение и аннотация (метка) самостоятельно.
Вы можете рассчитать все значения следующим образом:
p <- ggplot(data, aes(x=WS, y=DV, group=count))
p <- p + geom_boxplot(aes(fill=factor(count), group=interaction(WS, count)))
p <- p + stat_summary(fun.y=median, geom="smooth", aes(group=factor(count), color =factor(count)))
p <- p + scale_x_continuous(breaks = c(2,6,14))
p.values <- sapply(split(data, data$WS), function(x){wilcox.test(DV~count, x)$p.value})
labels <- symnum(p.values, corr = FALSE, cutpoints = c(0, .001,.01,.05, 1), symbols = c("***","**","*","n.s."))
y.values <- sapply(split(data, data$WS), function(x){max(sapply(split(x, x$count), function(xx){boxplot(x$DV, plot=F)$stats[5, ]}))})+2
p <- p + geom_signif(y_position = y.values, xmin = unique(data$WS)-.4, xmax = unique(data$WS)+.4, annotations = labels)
p
Это дает: