我最近发现了很棒的ggpubr
包。当我处理多个组时,我喜欢在facet(facet.by
)中分割我的数据。
我的问题由两个与同一图表相关的子问题组成。我想
我的目标是显示箱线图以及它们的对比较显着性值。由于组的重要性可能不同,我只能绘制重要的组,或指定重要的比较,并按组分别绘制它们。
示例数据:
library(ggpubr)
library(ggplot2)
# Create data
# :::::::::::::::::::::::::::::::::::::::::::::::::::
data("ToothGrowth")
df <- ToothGrowth
# Create basic plot
p <- ggboxplot(df,
x = "dose",
y = "len",
color = "dose",
palette =c("#00AFBB", "#E7B800", "#FC4E07"),
add = "jitter",
facet.by = "supp", # define faceting
shape = "dose")
# Add horizontal line per each group???
p + geom_hline(yintercept = mean(df$len), #aggregate(len ~ supp, df, mean)$len, # mean(df$len),
linetype = 2,
group = "supp")
导致
我尝试计算每组的均值(#aggregate(len ~ supp, df, mean)$len
),但它只添加了两行。
要指定配对的箱图以显示重要性结果,我可以添加
my_comparisons <- list( c("0.5", "1"), c("1", "2"), c("0.5", "2") )
显着性结果依赖于群体。然而,我想只展示重要的比较。如何为每个组仅指定重要对?类似的东西:
my_comp_OJ <- list( c("0.5", "1"), c("0.5", "2"))
my_comp_VC <- list( c("0.5", "1"), c("1", "2"), c("0.5", "2"))
应用hide.ns = TRUE
仅隐藏ns
,但保持对的行指示。
p + stat_compare_means(comparisons = my_comparisons,
label = "p.signif",
hide.ns = TRUE) + # Add pairwise comparisons p-value
stat_compare_means(label.y = 50) # Add global p-value
答案 0 :(得分:1)
您必须计算每个组的平均值,并且有一个data.frame表示哪个组来自哪个组。
> aggregate(len ~ supp, data = df, FUN = mean)
supp len
1 OJ 20.66333
2 VC 16.96333
在geom_hline
中包含此内容很简单。
grand.means <- aggregate(len ~ supp, data = df, FUN = mean)
ggboxplot(df,
x = "dose",
y = "len",
color = "dose",
palette = c("#00AFBB", "#E7B800", "#FC4E07"),
add = "jitter",
facet.by = "supp", # define faceting
shape = "dose") +
geom_hline(data = grand.means, aes(yintercept = len),
linetype = 2,
group = "supp")
请注意,在data
通话中我有一个len
参数,我yintercept
到aes
。这使得ggplot
意识到它正确地将aes
变量应用于相应的组,无论您如何应用它们。
至于调整后的显着性条,我认为没有一个现成的答案,因为ggpubr
调用ggsignif
确实有一个manual
参数,但前者没有实现它,至少在我浏览源代码时可以看到。我认为这条线很好,因为它显示了一个比较,即使它不重要。