我正在尝试制作一个包含两个分组变量的条形图,其中还包括一个包含一组总计数的条形图。下面的代码按照我想要的方式为我提供了一个包含两个分组变量的条形图,但我还想添加 2016 年和 2017 年的另一个条形图以及
grp
变量的总和(2016 年为 12 个,2017 年为 15 个) .
x<-data.frame(grp=rep(c("x1", "x2", "x3"), 9), yr=c(rep(2016,4), rep(2017,5)))
ggplot(x)+
geom_bar(aes(x=yr, fill=grp), position="dodge")
这有点笨拙,但我找到了解决方案:使用
rbind
将包含总计的组添加到数据框:
x<-data.frame(grp=rep(c("x1", "x2", "x3"), 9), yr=c(rep(2016,4), rep(2017,5))) %>%
rbind(data.frame(grp="total", yr=c(rep(2016, 12), rep(2017, 15))))
ggplot(x)+ geom_bar(aes(x=yr, fill=grp), position="dodge")
我不喜欢对值进行硬编码。在这里,我使用
janitor::adorn_totals
来获取总数:
x<-data.frame(grp=rep(c("x1", "x2", "x3"), 9),
yr=c(rep(2016, 4), rep(2017, 5)))
library(tidyverse)
library(janitor)
x %>%
mutate(yr = as.character(yr)) %>%
summarise(count = n(), .by = c(grp, yr)) %>%
group_split(yr) %>%
map_dfr(~adorn_totals(.x, , fill = NA)) %>%
fill(yr) %>%
ggplot()+
geom_bar(aes(x=yr, y=count, fill=grp), position="dodge", stat = "identity")
创建于 2024-04-09,使用 reprex v2.0.2