У меня есть некоторые данные, в которых каждое наблюдение содержит 2 фактора, классы (буква между A и E) и флаг (0 или 1). После применения group_by(classes,flag) и summary(frequency=n()) я получаю кадр данных, похожий на этот:
classes <-as.factor(c("A", "A", "B", "B", "C", "C", "D", "D", "E", "E"))
flag <- as.factor(rep(c(0,1),10))
quantity <- c(856, 569, 463, 125, 795, 313, 1000, 457, 669, 201)
df <- data.frame(classes, flag, quantity)
Мне удалось получить диаграмму, которую я хочу (упорядоченные столбцы, по одному для каждого уровня классов, каждый столбец заполнен пропорцией флага) с помощью этого кода:
ggplot(df, aes(x = reorder(classes, -quantity), y = quantity)) +
geom_bar(aes(fill = as.factor(flag)), stat="identity") +
theme(axis.text.x=element_text(angle = 90, hjust = 1)) +
labs(x = NULL, y = "Quantity", fill = "flag") +
scale_fill_manual(values=c("firebrick","dodgerblue4"),
labels=c("1"="Yes","0"="No"))+
theme(axis.ticks = element_blank())
Однако я не уверен, как использовать geom_text(), чтобы включить как общее количество в верхней части каждого столбца, так и долю значения заполнения внутри столбцов.
Спасибо за помощь!