在多面图内添加堆积条形图

Add stacked bar graphs inside faceted graphs

我正在多面条形图中绘制 3 columns/character 个向量,并希望能够将“吸烟者”绘制为每个条形图中的堆叠条形图。

我正在使用 ggplot2。我已经设法绘制了“edu”和“sex”,但我还希望能够在“sex”的每个条形图中看到每个“y”和“n”的计数(沿 x 划分) -axis by "edu").我附上了我的图表图像,

这是我通过输入以下代码实现的:

我尝试在 aes 中输入“fill=smoker”参数,但这没有用。 如果有人对如何清理我用来将图形转换为多面图形并将其表示为百分比的代码有任何建议,我也将非常感激,因为我是从别处拿来的。

test <- read.csv('test.csv', header = TRUE)
library(ggplot2)
ggplot(test, aes(x= edu, group=sex)) + 
    geom_bar(aes(y = ..prop.., fill = factor(..x..)), stat="count", show.legend = FALSE) +
    geom_text(aes( label = scales::percent(..prop..),
                   y= ..prop.. ), stat= "count", vjust = -.5, size = 3) +
    labs(y = NULL, x="education") +
    facet_grid(~sex) +
    scale_y_continuous(labels = scales::percent)

不确定这是否是您要查找的内容,但我已尽力回答您的问题。

library(tidyverse)
library(lubridate)
library(scales)


test <- tibble(
 edu = c(rep("hs", 5), rep("bsc", 3), rep("msc", 3)),
 sex = c(rep("m", 3), rep("f", 4), rep("m", 4)),
 smoker = c("y", "n", "n", "y", "y", rep("n", 3), "y", "n", "n"))


test %>%
 count(sex, edu, smoker) %>%
 group_by(sex) %>%
 mutate(percentage = n/sum(n)) %>%
 ggplot(aes(edu, percentage, fill = smoker)) +
 geom_col() +
 geom_text(aes(label = percent(percentage)),
   position = position_stack(vjust = 0.5)) +
 facet_wrap(~sex) +
 scale_y_continuous(labels = scales::percent) +
 scale_fill_manual(values = c("#A0CBE8", "#F28E2B"))