您如何将 ggplot 从 12 个单独的条形图拆分为 3 组,每组 4 个?

How can you split ggplot from 12 individual bars to 3 groups of 4?

我有一个包含 12 个单独条形的条形图。我想将它们分成 3 个各自的组,每个组都有自己的颜色,以便将它们识别为同一组。我一直在使用 ColorBrewer Set 3,因为它可以安全复印。当我在我的地块上使用它时,它全部变成一种颜色。

在图中,您可以看到 3 个组 - ELE、KEB 和 SMI,每个组有 4 个块。如果他们能更紧密地分开就好了。

# A tibble: 12 x 7
   vid.order sum.correct     n prop.correct z_score       p_val sig  
   <chr>           <int> <int>        <dbl>   <dbl>       <dbl> <lgl>
 1 ELE1               47    55        0.855    5.26 0.000000145 TRUE 
 2 ELE2               46    55        0.836    4.99 0.000000607 TRUE 
 3 ELE3               37    55        0.673    2.56 0.0104      TRUE 
 4 ELE4               47    55        0.855    5.26 0.000000145 TRUE 
 5 KEB1               40    55        0.727    3.37 0.000749    TRUE 
 6 KEB2               46    55        0.836    4.99 0.000000607 TRUE 
 7 KEB3               47    55        0.855    5.26 0.000000145 TRUE 
 8 KEB4               44    55        0.8      4.45 0.00000860  TRUE 
 9 SMI1               35    55        0.636    2.02 0.0431      TRUE 
10 SMI2               46    55        0.836    4.99 0.000000607 TRUE 
11 SMI3               41    55        0.745    3.64 0.000272    TRUE 
12 SMI4               35    55        0.636    2.02 0.0431      TRUE 

byBlot_sigtests %>% 
  ggplot(aes(x=vid.order, y=prop.correct))+
  geom_bar(stat="identity", position=position_dodge(.9))+
  labs(x="video", y="proportion natural selected")+
  geom_hline(yintercept = .5) +
  expand_limits(y=c(0,1)) +
  scale_fill_brewer(palette = "Set3") +
  jtools::theme_apa()

我个人会创建一个包含组(ELE、KEB 或 SMI)的列并在 aes(fill = )

中使用它
library(data.table)
library(dplyr)
library(ggplot2)
library(jtools)

#make object data.table
setDT(byBlot_sigtests)

#create a column with the groups (vid.order but without the numbers)
byBlot_sigtests[, group := gsub("[0-9]", "", vid.order)]

#plot
byBlot_sigtests %>% 
  ggplot(aes(x=vid.order, y=prop.correct, fill = group))+
  geom_bar(stat="identity", position=position_dodge(.9))+
  labs(x="video", y="proportion natural selected")+
  geom_hline(yintercept = .5) +
  expand_limits(y=c(0,1)) +
  scale_fill_brewer(palette = "Set3") +
  jtools::theme_apa()