Как создать сгруппированную гистограмму в R (с примерами)


Сгруппированная гистограмма — это тип диаграммы, на которой отображаются количества различных переменных, сгруппированных по другой переменной.

В этом руководстве объясняется, как создавать сгруппированные гистограммы в R с помощью библиотеки визуализации данных ggplot2 .

Сгруппированная гистограмма в ggplot2

Предположим, у нас есть следующий фрейм данных, который отображает среднее количество очков, набранных за игру девятью баскетболистами:

#create data frame
df <- data.frame(team= rep (c('A', 'B', 'C'), each =3),
 position= rep (c('Guard', 'Forward', 'Center'), times =3),
 points=c(14, 8, 8, 16, 3, 7, 17, 22, 26))

#view data frame
df

 team position points
1 A Guard 14
2 A Forward 8
3 A Center 8
4 B Guard 16
5 B Forward 3
6 B Center 7
7 C Guard 17
8 C Forward 22
9 C Center 26

Мы можем использовать следующий код для создания сгруппированной гистограммы, которая отображает очки, набранные каждым игроком, сгруппированные по командам и позициям:

library (ggplot2)

ggplot(df, aes (fill=position, y=points, x=team)) + 
 geom_bar(position='dodge', stat='identity')

Настройка сгруппированной гистограммы

Мы также можем настроить заголовок, метки осей, тему и цвета сгруппированной гистограммы, чтобы она выглядела так, как нам хотелось бы:

library (ggplot2)

ggplot(df, aes (fill=position, y=points, x=team)) + 
 geom_bar(position='dodge', stat='identity') +
 theme_minimal() + 
 labs(x='Team', y='Points', title='Avg. Points Scored by Position & Team') +
 theme(plot.title = element_text (hjust=0.5, size=20, face='bold')) +
 scale_fill_manual('Position', values=c('coral2', 'steelblue', 'pink'))

Мы можем настроить внешний вид еще больше, используя одну из тем в библиотеке ggthemes.Например, мы могли бы использовать тему Wall Street Journal из этой библиотеки:

install.packages('ggthemes')

library (ggplot2)
library (ggthemes)

ggplot(df, aes (fill=position, y=points, x=team)) + 
 geom_bar(position='dodge', stat='identity') +
 theme_wsj() 

Обратитесь к нашему Полному руководству по лучшим темам ggplot2, чтобы узнать еще больше тем.

Дополнительные ресурсы

Как создать столбчатую диаграмму с накоплением в R
Как создать сгруппированный блокплот в R с помощью ggplot2
Как создавать параллельные графики в ggplot2