Вы можете использовать геометрический объект geom_boxplot () из библиотеки ggplot2, чтобы нарисовать коробочный график. Квадратный график помогает визуализировать распределение данных по квартилям и определять наличие выбросов.
Мы будем использовать набор данных airquality, чтобы представить коробочный график с ggplot. Этот набор данных измеряет качество воздуха в Нью-Йорке с мая по сентябрь 1973 года. Набор данных содержит 154 наблюдения. Мы будем использовать следующие переменные:
- Озон: числовая переменная
- Ветер: числовая переменная
- Месяц: с мая по сентябрь. Числовая переменная
В этом уроке вы узнаете
Создать Box Box
Прежде чем вы начнете создавать свой первый блок-график, вам нужно обработать данные следующим образом:
- Шаг 1: Импортируйте данные
- Шаг 2: отбросьте ненужные переменные
- Шаг 3: конвертировать месяц в уровень фактора
- Шаг 4: Создайте новую категориальную переменную, разделяющую месяц на три уровня: начало, середина и конец.
- Шаг 5: Удалить отсутствующие наблюдения
Все эти шаги выполняются с помощью dplyr и оператора конвейера%>%.
library(dplyr) library(ggplot2) # Step 1 data_air <- airquality % > % #Step 2 select(-c(Solar.R, Temp)) % > % #Step 3 mutate(Month = factor(Month, order = TRUE, labels = c("May", "June", "July", "August", "September")), #Step 4 day_cat = factor(ifelse(Day < 10, "Begin", ifelse(Day < 20, "Middle", "End"))))
Хорошей практикой является проверка структуры данных с помощью функции glimpse ().
glimpse(data_air)
Вывод:
## Observations: 153 ## Variables: 5 ## $ Ozone <int> 41, 36, 12, 18, NA, 28, 23, 19, 8, NA, 7, 16, 11, 14, ... ## $ Wind <dbl> 7.4, 8.0, 12.6, 11.5, 14.3, 14.9, 8.6, 13.8, 20.1, 8.6... ## $ Month <ord> May, May, May, May, May, May, May, May, May, May, May,... ## $ Day <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,... ## $ day_cat <fctr> Begin, Begin, Begin, Begin, Begin, Begin, Begin, Begi...
В наборе данных есть NA. Удалить их разумно.
# Step 5 data_air_nona <-data_air %>% na.omit()
Основной сюжет
Давайте построим базовый коробочный график с распределением озона по месяцам.
# Store the graph box_plot <- ggplot(data_air_nona, aes(x = Month, y = Ozone)) # Add the geometric object box plot box_plot + geom_boxplot()
Код Объяснение
- Сохраните график для дальнейшего использования
- box_plot: вы сохраняете график в переменной box_plot. Это полезно для дальнейшего использования или позволяет избежать слишком сложной строки кодов.
- Добавьте график геометрического объекта
- Вы передаете набор данных data_air_nona в ggplot.
- Внутри аргумента aes () вы добавляете оси X и Y.
- Знак + означает, что вы хотите, чтобы R продолжал читать код. Это делает код более читабельным, разбивая его.
- Используйте geom_boxplot () для создания блочного графика
Вывод:
Изменить сторону графика
Вы можете перевернуть сторону графика.
box_plot + geom_boxplot()+ coord_flip()
Код Объяснение
- box_plot: вы используете график, который вы сохранили. Это позволяет избежать переписывания всех кодов каждый раз, когда вы добавляете новую информацию в график.
- geom_boxplot (): создать коробочный график
- ordin_flip (): перевернуть сторону графика
Вывод:
Изменить цвет выброса
Вы можете изменить цвет, форму и размер выбросов.
box_plot + geom_boxplot(outlier.colour = "red", outlier.shape = 2, outlier.size = 3) + theme_classic()
Код Объяснение
- outlier.colour = «red»: управление цветом выбросов
- outlier.shape = 2: изменить форму выброса. 2 относится к треугольнику
- outlier.size = 3: изменить размер треугольника. Размер пропорционален числу.
Вывод:
Добавить сводную статистику
Вы можете добавить сводную статистику на график.
box_plot + geom_boxplot() + stat_summary(fun.y = mean, geom = "point", size = 3, color = "steelblue") + theme_classic()
Код Объяснение
- stat_summary () позволяет добавить сводку к блок-графику
- Аргумент fun.y контролирует возвращаемую статистику. Вы будете использовать среднее
- Примечание. Доступна и другая статистика, например, минимальная и максимальная. На одном графике может быть представлено более одной статистики
- geom = «point»: постройте среднее значение с точкой
- размер = 3: размер точки
- color = «steelblue»: цвет точек
Вывод:
Коробка с точками
На следующем графике вы добавляете слои точечного графика. Каждая точка представляет наблюдение.
box_plot + geom_boxplot() + geom_dotplot(binaxis = 'y', dotsize = 1, stackdir = 'center') + theme_classic()
Код Объяснение
- geom_dotplot () позволяет добавить точку к ширине бина
- binaxis = ‘y’: изменить положение точек вдоль оси y. По умолчанию ось X
- dotsize = 1: размер точек
- stackdir = ‘center’: способ сложить точки: четыре значения:
- «вверх» (по умолчанию),
- «вниз»
- «центр»
- «Centerwhole»
Вывод:
Контроль эстетики сюжета коробки
Изменить цвет коробки
Вы можете изменить цвета группы.
ggplot(data_air_nona, aes(x = Month, y = Ozone, color = Month)) + geom_boxplot() + theme_classic()
Код Объяснение
- Цвета групп контролируются в отображении aes (). Вы можете использовать цвет = месяц, чтобы изменить цвет коробки в соответствии с месяцами
Вывод:
Сюжет с несколькими группами
Также возможно добавить несколько групп. Вы можете визуализировать разницу в качестве воздуха в зависимости от дня проведения мероприятия.
ggplot(data_air_nona, aes(Month, Ozone)) + geom_boxplot(aes(fill = day_cat)) + theme_classic()
Код Объяснение
- Отображение aes () геометрического объекта управляет отображаемыми группами (эта переменная должна быть фактором)
- aes (fill = day_cat) позволяет создавать три поля для каждого месяца по оси X
Вывод:
Участок с разбитыми точками
Еще один способ показать точку с помощью дрожащих точек. Это удобный способ визуализации точек с категориальной переменной.
Этот метод позволяет избежать наложения дискретных данных.
box_plot + geom_boxplot() + geom_jitter(shape = 15, color = "steelblue", position = position_jitter(width = 0.21)) + theme_classic()
Код Объяснение
- geom_jitter () добавляет небольшое затухание к каждой точке.
- shape = 15 меняет форму точек. 15 представляет квадраты
- color = «steelblue»: изменить цвет точки
- position = position_jitter (width = 0.21): способ размещения точек перекрытия. position_jitter (width = 0.21) означает, что вы перемещаете точки на 20 процентов от оси x. По умолчанию 40 процентов.
Вывод:
Вы можете увидеть разницу между первым графиком с помощью метода джиттера и вторым с помощью метода точек.
box_plot + geom_boxplot() + geom_point(shape = 5, color = "steelblue") + theme_classic()
Участок с надрезом
Интересной особенностью geom_boxplot () является участок с надрезами. Зубчатый участок сужает прямоугольник вокруг медианы. Основное назначение участка с надрезом — сравнить значение медианы между группами. Существуют убедительные доказательства того, что две группы имеют разные медианы, когда выемки не перекрываются. Зазор рассчитывается следующим образом:
с — межквартильный и число наблюдений.
box_plot + geom_boxplot(notch = TRUE) + theme_classic()
Код Объяснение
- geom_boxplot (notch = TRUE): создать участок с надрезами
Вывод:
Резюме
Мы можем суммировать различные типы коробочных графиков в таблице ниже:
Задача |
Код |
---|---|
Основной сюжет |
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() |
перевернуть сторону |
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + coord_flip() |
Участок с надрезом |
ggplot(df, aes( x = x1, y =y)) + geom_boxplot(notch=TRUE) |
Сюжет с разбитыми точками |
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + geom_jitter(position = position_jitter(0.21)) |