Часто вам может понадобиться создать гистограмму с несколькими разными цветами в R.
В следующих примерах показано, как это сделать в base R и в ggplot2 .
Пример 1: Гистограмма с разными цветами в базе R
В следующем коде показано, как создать гистограмму только с одним цветом в базе R:
#create data frame
df <- data.frame(x=c(12, 14, 14, 15, 15, 17, 19, 22, 23, 23, 24))
#create histogram
hist(df$x)

По умолчанию все цвета столбцов на гистограмме одинаковы.
Однако мы можем использовать следующий код для создания гистограммы с тремя разными цветами:
#create data frame
df <- data.frame(x=c(12, 14, 14, 15, 15, 17, 19, 22, 23, 23, 24))
#define histogram break points
hist_breaks <- hist(df$x)$breaks
#define colors to use in histogram based on break points
color_list <- rep('red', length(hist_breaks))
color_list[hist_breaks < 20 ] <- ' blue '
color_list[hist_breaks < 16 ] <- ' purple '
#create histogram with custom colors
hist(df$x, col=color_list)

Вот как работала логика для создания трех цветов:
- Во-первых, мы указали, что каждая полоса должна быть красной .
- Затем мы изменили каждый бар с точкой останова менее 20 на синий .
- Затем мы изменили каждый бар с точкой останова менее 16 на фиолетовый .
Конечным результатом является гистограмма с тремя цветами.
Пример 2: гистограмма с разными цветами в ggplot2
Предположим, у нас есть следующий фрейм данных в R:
#create data frame
df <- data.frame(x=c(12, 14, 14, 15, 15, 17, 19, 22, 23, 23, 24))
#view data frame
df
x
1 12
2 14
3 14
4 15
5 15
6 17
7 19
8 22
9 23
10 23
11 24
Чтобы создать гистограмму с разными цветами для этого фрейма данных, нам нужно сначала создать группирующую переменную для значений с помощью вложенного оператора if else :
#create grouping variable
df$group = ifelse(df$x < 16 , 'C', ifelse(df$x < 20 , 'B', 'A'))
#view updated data frame
df
x group
1 12 C
2 14 C
3 14 C
4 15 C
5 15 C
6 17 B
7 19 B
8 22 A
9 23 A
10 23 A
11 24 A
Теперь мы можем создать гистограмму в ggplot2 и определить цвета на графике с помощью групповой переменной:
#create histogram with custom colors
ggplot(df, aes(x, fill=group)) +
geom_histogram(bins= 6 , color='black') +
scale_fill_manual(values = c('A' = 'red',
'B' = 'blue',
'C' = 'purple'))

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