您如何将 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()
我有一个包含 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()