Управление позиционированием уровней значимости на боксплоте с выбросами: ggplot и ggpubr
Я хотел бы отобразить уровни значимости на боксплоте (используя ggplot2 и ggpubr). Сложность состоит в том, что когда в наборе данных есть выбросы, различия указываются от самого верхнего выброса. Как я могу контролировать положение stat_compare_means в такой ситуации?
Вот воспроизводимый пример:
#Example data. Credit: DaniCee
mydf <- data.frame(ID=paste(sample(LETTERS, 163, replace=TRUE), sample(1:1000, 163, replace=FALSE), sep=''),
Group=c(rep('C',10),rep('FH',10),rep('I',19),rep('IF',42),rep('NA',14),rep('NF',42),rep('NI',15),rep('NS',10),rep('PGMC4',1)),
Value=rnorm(n=163))
CN <- combn(levels(mydf$Group), 2, simplify = FALSE)
#This is what I want the plot to look like
ggplot(mydf, aes(x=Group, y=Value, fill=Group)) + geom_boxplot(outlier.shape = NA) + stat_compare_means(comparisons = CN)
#Add outliers
mydf$Value[4] <- 300
mydf$Value[5] <- 765
mydf$Value[6] <- 12000
# the plot with outliers
ggplot(mydf, aes(x=Group, y=Value, fill=Group)) + geom_boxplot(outlier.shape = NA) +
stat_compare_means(comparisons = CN)
Я также попробовал подмножество так:
stat_compare_means(data = subset(mydf, Value < 10), comparisons = CN)
Я признаю, что недостаточно разбираюсь во внутренностях ggplot, чтобы иметь возможность устранять неисправности дальше. Ваши идеи будут оценены.