使用 ggplot 分隔标签/汇总条件

Separate labels / Summarize conditions with ggplot

我用 Ggplot 为两个实验(条件 1、条件 2)创建了一个简单的图,在每个实验中我都有一个“低”和一个“高”条件。

这是一个示例图:

da<-data.frame(group=c("condition1_high","condition1_low","condition2_high","condition2_low"),numb=c(30,25,26,20))

da %>%
  ggplot(aes(x=group, y=numb, fill = group)) +
  geom_bar(position=position_dodge(), stat="identity") +
  scale_fill_manual(values=rep(c("grey20","grey80"), ceiling(length(da$group)/2))[1:length(da$group)])

导致:

现在我想以“填充”维度仅包含右侧标签“低”和“高”并且 x 轴总结每个条件的方式分隔标签,如下所示:

我怎样才能做到这一点?

使用

library(tidyverse)
library("stringi")
da.new <- da %>% separate(group, c("A", "B"), remove = F)

da.new %>% 
mutate_if(is.character, stri_trans_totitle) %>%
  ggplot(aes(x=A, y=numb, fill = B)) +
  geom_bar(position=position_dodge(), stat="identity") +
  scale_fill_manual(values=rep(c("grey20","grey80"), ceiling(length(da.new$A)/2))[1:length(da.new$A)],
                    name = "Group") +
  labs(x="Experimental Condition") +
  geom_text(aes(label=numb), 
            position = position_dodge(width = 0.9), vjust = -0.25)