boxplot() у R: Як зробити BoxСюжети в RStudio [Приклади]

boxplot() у R

boxplot() у R допомагає візуалізувати розподіл даних за квартилями та виявити наявність викидів. Ви можете використовувати геометричний об’єкт geom_boxplot() із бібліотеки ggplot2, щоб намалювати boxplot() у R.

Ми використаємо набір даних про якість повітря, щоб представити boxplot() у R за допомогою ggplot. Цей набір даних вимірює якість повітря в Нью-Йорку з травня по вересень 1973 року. Набір даних містить 154 спостереження. Ми будемо використовувати такі змінні:

  • Озон: числова змінна
  • Вітер: Числова змінна
  • Місяць: з травня по вересень. Числова змінна

Створювати Box Сюжет

Перш ніж почати створювати свій перший boxplot() у R, вам потрібно маніпулювати даними наступним чином:

  • Крок 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()	

Базовий коробковий сюжет

Давайте побудуємо базовий R boxplot() із розподілом озону за місяцями.

# 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 Це корисно для подальшого використання або уникнення надто складних рядків коду
  • Додайте геометричний об’єкт R boxplot()
    • Ви передаєте набір даних data_air_nona до ggplot boxplot.
    • Всередині аргументу aes() ви додаєте вісь x і вісь y.
    • Знак + означає, що ви хочете, щоб R продовжував читати код. Це робить код більш читабельним, розбиваючи його.
    • Використовуйте geom_boxplot(), щоб створити коробчату діаграму

вихід:

Базовий Box Сюжет

Змініть сторону графіка

Ви можете перевернути бік графіка.

box_plot +
  geom_boxplot()+
  coord_flip()

Пояснення коду

  • box_plot: ви використовуєте графік, який ви зберегли. Це дозволяє уникнути переписування всіх кодів кожного разу, коли ви додаєте нову інформацію на графік.
  • geom_boxplot(): Створення boxplots() у R
  • coord_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: Змінити розмір трикутника. Розмір пропорційний кількості.

вихід:

Змінити колір викиду

Додайте підсумкову статистику

Ви можете додати зведену статистику до R boxplot().

box_plot +
    geom_boxplot() +
    stat_summary(fun.y = mean,
        geom = "point",
        size = 3,
        color = "steelblue") +
    theme_classic()

Пояснення коду

  • stat_summary() дозволяє додавати підсумок до горизонтального прямокутного графіка R
  • Аргумент fun.y керує статистикою, що повертається. Ви будете використовувати середнє
  • Примітка. Доступні інші статистичні дані, наприклад мінімальна та макс. На одному графіку можна відображати більше однієї статистики
  • geom = “точка”: побудуйте середнє значення з точкою
  • size=3: Розмір точки
  • color =”steelblue”: Колір точок

вихід:

Додайте підсумкову статистику

Box Ділянка з крапками

У наступному горизонтальному прямокутному графіку R ви додаєте шари точкового графіка. Кожна крапка означає спостереження.

box_plot +
    geom_boxplot() +
    geom_dotplot(binaxis = 'y',
        dotsize = 1,
        stackdir = 'center') +
    theme_classic()

Пояснення коду

  • geom_dotplot() дозволяє додавати точку до ширини біна
  • binaxis='y': змінює положення крапок уздовж осі y. За замовчуванням вісь х
  • dotsize=1: Розмір точок
  • stackdir='center': спосіб укладання точок: чотири значення:
    • «вгору» (за замовчуванням),
    • “Вниз”
    • «центр»
    • “центральне ціле”

вихід:

Box Ділянка з крапками

Контроль естетики в Box Сюжет

Змініть колір коробки

Ви можете змінити кольори групи.

ggplot(data_air_nona, aes(x = Month, y = Ozone, color = Month)) +
    geom_boxplot() +
    theme_classic()

Пояснення коду

  • Кольори груп контролюються у відображенні aes(). Ви можете використовувати color= Month, щоб змінити колір прямокутника та діаграми вусів відповідно до місяців

вихід:

Змініть колір Box

Box ділянка з кількома групами

Також можна додати кілька груп. Ви можете візуалізувати різницю в якості повітря залежно від дня вимірювання.

ggplot(data_air_nona, aes(Month, Ozone)) +
    geom_boxplot(aes(fill = day_cat)) +
    theme_classic()

Пояснення коду

  • Відображення aes() геометричного об’єкта керує групами для відображення (ця змінна має бути фактором)
  • aes(fill= day_cat) дозволяє створити три поля для кожного місяця на осі x

вихід:

Box Ділянка з кількома групами

Box Ділянка з тремтливими крапками

Ще один спосіб показати крапку – це змішані точки. Це зручний спосіб візуалізації точок за допомогою коробкової діаграми для категоріальних даних у змінній R.

Цей метод дозволяє уникнути накладання дискретних даних.

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 Ділянка з тремтливими крапками

Ви можете побачити різницю між першим графіком з методом джиттера та другим з точковим методом.

box_plot +
    geom_boxplot() +
    geom_point(shape = 5,
        color = "steelblue") +
    theme_classic()

Box Ділянка з тремтливими крапками

Зарізаний Box Сюжет

Цікавою особливістю geom_boxplot() є функція прямокутної діаграми з вирізами в R. Діаграма з вирізами звужує рамку навколо медіани. Основна мета прямокутного діаграми — порівняти значущість медіани між групами. Є переконливі докази, що дві групи мають різні медіани, коли виїмки не накладаються. Виїмка обчислюється наступним чином:

Зарізаний Box Сюжет

з — інтерквартиль і кількість спостережень.

box_plot +
    geom_boxplot(notch = TRUE) +
    theme_classic()

Пояснення коду

  • geom_boxplot(notch=TRUE): Створіть горизонтальну прямокутну діаграму R

вихід:

Зарізаний Box Сюжет

Підсумки

Ми можемо узагальнити різні типи горизонтальної коробкової діаграми R у таблиці нижче:

мета код
Базовий коробковий сюжет
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)
Box ділянка з рухомими крапками
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + geom_jitter(position = position_jitter(0.21))

Також перевірте: - Підручник R для початківців: вивчайте мову програмування R