Вы можете использовать следующий базовый синтаксис для отображения процентов по оси Y гистограммы в ggplot2:
library (ggplot2)
library (scales)
#create histogram with percentages
ggplot(data, aes (x = factor (team))) +
geom_bar( aes (y = (..count..)/ sum (..count..))) +
scale_y_continuous(labels=percent)
В следующих примерах показано, как использовать этот синтаксис на практике.
Пример 1: базовая гистограмма с процентами
В следующем коде показано, как создать гистограмму для категориальных переменных с процентами, отображаемыми по оси Y:
library (ggplot2)
library (scales)
#define data frame
data <- data.frame(team = c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C', 'C'),
points = c(77, 79, 93, 85, 89, 99, 90, 80, 68, 91, 92))
#create histogram with percentages
ggplot(data, aes (x = factor (team))) +
geom_bar( aes (y = (..count..)/ sum (..count..))) +
scale_y_continuous(labels=percent)

Пример 2: гистограмма с процентами (удалить десятичные разряды)
Вы также можете использовать аргумент точности , чтобы отображать только целые числа в процентах по оси Y:
library (ggplot2)
library (scales)
#define data frame
data <- data.frame(team = c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C', 'C'),
points = c(77, 79, 93, 85, 89, 99, 90, 80, 68, 91, 92))
#create histogram with percentages
ggplot(data, aes (x = factor (team))) +
geom_bar( aes (y = (..count..)/ sum (..count..))) +
scale_y_continuous(labels = scales :: percent_format(accuracy = 1L ))

Пример 3: Пользовательская гистограмма с процентами
В следующем коде показано, как создать гистограмму с процентами, отображаемыми по оси Y, и пользовательским заголовком, метками осей и цветами:
library (ggplot2)
library (scales)
#define data frame
data <- data.frame(team = c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C', 'C'),
points = c(77, 79, 93, 85, 89, 99, 90, 80, 68, 91, 92))
#create histogram with percentages and custom aesthetics
ggplot(data, aes (x = factor (team))) +
geom_bar( aes (y = (..count..)/ sum (..count..)), fill = 'lightblue') +
scale_y_continuous(labels=percent) +
labs(title = 'Breakdown by Team', x = 'Team', y = 'Percent of Total') +
theme_minimal()

Связанный: Полное руководство по лучшим темам ggplot2
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции с гистограммами в R:
Как изменить количество интервалов в гистограмме в R
Как построить несколько гистограмм в R
Как создать гистограмму относительной частоты в R