如何在具有多个构面和组的ggplot geom_bar()中绘制重要性?

时间:2019-12-19 12:27:05

标签: r ggplot2 geom-bar

我创建了一个多面图,每个面板使用ggplot2有4组,每组3条。

Main bar plot

然后,我进行了一项单独的测试,以查看每个年龄组和每个方面中各个条形类别的组合之间在统计上是否存在显着差异,从而产生了单独的data.frame p.val.df。我现在需要弄清楚如何使显着性条出现在条之间,就像在this answer中一样,但在每个年龄段内也是如此。这是我要搁浅的地方。由于我已经有了我的p值,因此我不需要使用geom_signif()包中的ggsignif来计算它们,而是只想使用geom_bracket包中的ggpubr绘制它们。但是任何可以使它起作用的方法都是可以接受的。

以下是数据和代码:

library(ggplot2)
library(ggpubr)

# Main data
df <- data.frame(
  factor(rep(c("A1", "A2"), each = 12), levels = c("A1", "A2")),
  factor(rep(c("G", "M", "B"), each = 4), levels = c("G", "M", "B")),
  factor(rep(c("0-2", "3-5", "6-12", "13-17"), 6), levels = c("0-2", "3-5", "6-12", "13-17")),
  c(160, 162, 169, 108, 110, 111, 76, 73, 76, 45, 41, 38, 175, 
    177, 173, 174, 167, 172, 176, 162, 166, 143, 130, 143))

colnames(df) <- c("Class", "Type", "Age", "Coefficient")

# Intergroup difference significance
p.val.df <- data.frame(
  factor(rep(c("A1", "A2"), each = 12), levels = c("A1", "A2")),
  factor(rep(c("G", "M", "G"), each = 4), levels = c("G", "M")),
  factor(rep(c("B", "B", "M"), each = 4), levels = c("B", "M")),
  factor(rep(c("0-2", "3-5", "6-12", "13-17"), 6), levels = c("0-2", "3-5", "6-12", "13-17")),
  c(0.635, 0.584, 0.268, 0.051, 0.163, 0.779, 0.302, 0.361, 0.055, 0.425, 0.998, 0.055,
    0.707, 0.230, 0.000, 0.002, 0.418, 0.313, 0.211, 0.037, 0.675, 0.764, 0.011, 0.881))

colnames(p.val.df) <- c("Class", "Type1", "Type2", "Age", "p.value")

# Plotting
ggplot(df, aes(x = Age, y = Coefficient, fill = Type)) + 
  geom_bar(position = "dodge", stat = "identity") + 
  labs(y = "Coefficient", x = "Age", fill = "Type") + 
  facet_wrap( ~ Class, scales = "free") + 
  expand_limits(y = 300) +
  theme_classic() +

### NOT SURE HOW TO PROCEED HERE
 geom_bracket(
    data = p.val.df, y.position = 250, step.increase = 0.1,
    aes(xmin = Type1, xmax = Type2, label = signif(p.value, 2)))

0 个答案:

没有答案