我想将 Tukey.HSD 事后测试的结果添加到ggplot2
箱线图中。这个 SO 答案包含一个我想要的手动示例(即,绘图上的字母是手动添加的;共享一个字母的组是无法区分的,p>whatever)。
是否有基于 AOV 和 Tukey HSD 事后分析的自动功能将这些字母添加到箱线图中?
我认为编写这样的函数不会太难。它看起来像这样:
set.seed(0)
lev <- gl(3, 10)
y <- c(rnorm(10), rnorm(10) + 0.1, rnorm(10) + 3)
d <- data.frame(lev=lev, y=y)
p_base <- ggplot(d, aes(x=lev, y=y)) + geom_boxplot()
a <- aov(y~lev, data=d)
tHSD <- TukeyHSD(a)
# Function to generate a data frame of factor levels and corresponding labels
generate_label_df <- function(HSD, factor_levels) {
comparisons <- rownames(HSD$l)
p.vals <- HSD$l[ , "p adj"]
## Somehow create a vector of letters
labels <- # A vector of letters, one for each factor level, generated using `comparisons` and `p.vals`
letter_df <- data.frame(lev=factor_levels, labels=labels)
letter_df
}
# Add the labels to the plot
p_base +
geom_text(data=generate_label_df(tHSD), aes(x=l, y=0, label=labels))
我意识到该TukeyHSD
对象有一个plot
方法,并且还有另一个包(我现在似乎找不到)可以完成我在基本图形中描述的内容,但我真的更喜欢在ggplot2
.