#r #ggplot2 #facet #geom-bar #stacked-chart
#r #ggplot2 #фасет #геометрическая шкала #диаграмма с накоплением
Вопрос:
Я строю 3 столбца / символьных вектора в фасетной гистограмме и хотел бы иметь возможность отображать «курильщика» в виде сложенной гистограммы внутри каждой гистограммы.
Я использую ggplot2. Мне уже удалось отобразить «edu» и «sex», но я также хотел бы иметь возможность видеть количество каждого «y» и «n» внутри каждой столбчатой диаграммы «sex» (разделенной по оси x на «edu»). Я прикрепил изображение моего графика,
чего я добился, введя следующий код:
Я попытался ввести аргумент «fill = smoker» в aes, но это не сработало. Если у кого-нибудь есть какие-либо предложения о том, как очистить код, который я использовал, чтобы превратить график в фасетный и выразить его в процентах, я также был бы очень благодарен, поскольку я взял его откуда-то еще.
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)
Комментарии:
1. Где
test
?2. это просто то, что я назвал .csv. Это на изображении [1]
Ответ №1:
Не уверен, что это то, что вы ищете, но я изо всех сил старался ответить на ваш вопрос.
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"))
Комментарии:
1. Спасибо. Да, это тот эффект, который я хотел. Мне нужно будет найти способ, чтобы проценты на графиках представляли накопленное значение в процентах от каждой группы (edu), а не в процентах от пола.