Текущая версия ggplot2 не позволяет использовать метки в geom_text (), когда используется весовая эстетика c. Вам нужно будет обобщить фрейм данных, а затем сделать это обычным способом, используя метку aestheti c.
На самом деле, требуется не так много дополнительной работы, как показано с использованием набора данных mtcars. Требуются только две дополнительные строки, и вам не нужно создавать новый фрейм данных, если вы передаете результаты вперед.
library(ggplot2)
library(dplyr)
data(mtcars)
(1) Использование веса aestheti c для суммирования переменной mpg
на am
и cyl
. Невозможно добавить метки к столбцам (6 строк).
mtcars %>%
mutate(am=factor(am, labels=c("auto","manual")), cyl=factor(cyl)) %>%
ggplot(aes(x=cyl, fill=am, weight=mpg)) +
geom_bar(width=0.5, position='dodge') +
labs(y="Total miles/gallon", x="Cylinders", fill="Transmission") +
theme_minimal()
(2) Сначала суммируя данные, затем используя метку aestheti c с geom_text, можно добавлять метки к столбцам (2 дополнительные строки).
mtcars %>%
mutate(am=factor(am, labels=c("auto","manual")), cyl=factor(cyl)) %>%
group_by(cyl, am) %>% # extra
summarise(n = sum(mpg)) %>% # extra
ggplot(aes(x=cyl, fill=am, y=n, label=n)) +
geom_col(width=0.5, position='dodge') +
geom_text(position=position_dodge(0.5), vjust=-0.25) +
labs(y="Total miles/gallon", x="Cylinders", fill="Transmission") +
theme_minimal()