Возможным решением является вычисление пропорции вне ggplot2
, здесь я использую dplyr
для вычисления этих различных пропорций:
library(dplyr)
df_calculated <- df %>% count(group, anon) %>%
mutate(Percent_col = n / sum(n)) %>%
group_by(group) %>%
mutate(Percent = n/sum(n))
# A tibble: 5 x 5
# Groups: group [3]
group anon n Percent_col Percent
<fct> <fct> <int> <dbl> <dbl>
1 A no 3 0.333 0.75
2 A yes 1 0.111 0.25
3 B no 1 0.111 0.333
4 B yes 2 0.222 0.667
5 C no 2 0.222 1
А затем использовать geom_col
вместо geom_bar
для нарисуйте гистограмму и geom_text
, чтобы добавить текстовую метку для каждой пропорции:
library(dplyr)
library(ggplot2)
ggplot(df_calculated, aes(x = group, y = Percent_col, fill = anon))+
geom_col()+
scale_y_continuous(labels=scales::percent) +
ylab("relative frequencies")+
geom_text(aes(label = scales::percent(Percent)), position = position_stack(0.5))+
geom_text(inherit.aes = FALSE,
data = df_calculated %>%
group_by(group) %>%
summarise(Sum = sum(Percent_col)),
aes(label = scales::percent(Sum),
y = Sum, x = group), vjust = -0.5)
![enter image description here](https://i.stack.imgur.com/Fem6G.png)
Отвечает ли он на ваш вопрос?