#r #ggplot2
Вопрос:
Я создал следующий график с помощью этого кода
geom_bar(colour="black",fill="darkgrey") theme_apa() theme(
plot.title = element_blank(),
axis.title.x = element_blank(),
axis.title.y = element_blank())
geom_text(stat='count', aes(label=..count..), vjust=-0.5)
scale_y_continuous(limits = c(0,25))
- Прежде всего, как мне заставить
scale_y_continuous(limits = c(0,25))
автоматически распознавать максимальное количество на графике и расширить ось y на 3? В этом случае я сам установил для него значение 25, но есть ли способ заставить его делать это автоматически (например, 22 из первого ответа 3)? - В верхней части каждого столбца у меня есть количество каждого ответа. Есть ли способ заставить его показывать количество, а в скобках — процент от этого количества по сравнению с общим количеством? Например, процент 22 из 51 ответа в целом будет выглядеть как 22 (43%).
Ответ №1:
Чтобы ответить на ваш вопрос по пунктам.
limits
Аргумент шкалы может принимать функцию (или, в последних версиях, формулу синтаксиса лямбда), которая принимает естественные пределы в виде вектора длины 2 в качестве входных данных. Вы можете написать свою собственную формулу, если хотите увеличить максимум на 3.- Вы можете использовать
after_stat()
функцию для доступа к вычисляемым переменным, чтобы вы могли форматироватьcount
вычисляемую переменную по своему вкусу.
library(ggplot2)
df <- data.frame(
value = sample(LETTERS[1:5], 50, replace = TRUE)
)
ggplot(df, aes(value))
geom_bar()
geom_text(
stat = "count", vjust = -1,
aes(label = after_stat(
paste0(count, " (", count * 100 / sum(count), "%)")
))
)
scale_y_continuous(
limits = ~ c(0, .x[2] 3)
)
Создано 2021-11-01 пакетом reprex (версия 0.3.0)
Комментарии:
1. Большое вам спасибо, это работает отлично. Я все еще не могу понять, как работают ограничения по оси y, но я изучу это дальше. Кроме того, я округлил%, так как в нем было много цифр следующим образом
paste0(count, " (", round(count * 100 / sum(count),0), "%)")