Я пытался вывести в ggplot график, который показывает метки в процентном значении и пропорционально коэффициенту группировки, определенному в geom_bar. Вместо значений в процентах, пропорциональных общей численности населения, я хотел бы вывести значение метки, пропорциональное каждой подгруппе (в данном случае это место A и место B), но мне это не удалось. Смотрите ниже воспроизводимый пример
Воспроизводимый кадр данных
Random<-data.frame(replicate(3,sample(0:3,3024,rep=TRUE)))
Random$Trxn_type <- sample(c("Debit", "Credit"),
size = nrow(Random),
prob = c(0.76, 0.24), replace = TRUE)
Random$YN <- sample(c("Yes", "No"),
size = nrow(Random),
prob = c(0.76, 0.24), replace = TRUE)
Random$Place <- sample(c("PlaceA", "PlaceB"),
size = nrow(Random),
prob = c(0.76, 0.24), replace = TRUE)
Random<-Random[, 4:6]
Затем применили следующий код
Share<-ggplot(Random, aes(x = YN, fill=Place)) +
scale_fill_brewer(palette="Greens")+
geom_bar(aes(y = ..prop.., group = Place),position = position_dodge()) +
facet_wrap(~ Random$Trxn_type, scales = "free_x", ncol=2)+
theme(strip.text.x = element_text(size = 15, colour = "black"))+
theme(panel.background = element_rect(fill = "white"),legend.position = "bottom")+
scale_y_continuous(labels = percent)+
ylab("Frequency") +
coord_flip()+
xlab("Answers") +
theme(plot.title = element_text(size = 16, face = "bold"),
axis.text=element_text(size=12),
axis.title=element_text(size=12))+
geom_text(aes(y=..prop..,label=scales::percent((..count..)/tapply(..count..,..PANEL..,sum)[..PANEL..])),
stat="count", vjust=-.5, position=position_dodge(.9))
Share
И получили следующий вывод
Вместо этого процентного распределения я хотел бы видеть процентное значение ответов с учетом места A и места B как двух отдельных групп населения. Проще говоря, я бы хотел, чтобы метки отображали значение в%, соответствующее размеру столбцов гистограммы, таким образом, чтобы гистограммы для места A в кредит суммировались до 100, а гистограммы для места B в кредит - до 100. То же самое относится и к дебету.
Спасибо!