Гістограма та гістограма в R (з прикладом)

Гістограма — чудовий спосіб відображення категоріальних змінних на осі абсцис. Цей тип графіка позначає два аспекти на осі y.

  1. Перший підраховує кількість випадків між групами.
  2. Другий показує підсумкову статистику (мін., макс., середнє тощо) змінної на осі y.

Ви використовуватимете набір даних mtcars із такими змінними:

  • cyl: номер циліндра в автомобілі. Числова змінна
  • am: Тип трансмісії. 0 для автоматичного і 1 для ручного. Числова змінна
  • mpg: Милі на галон. Числова змінна

Як створити гістограму

Щоб створити графік у R, ви можете використовувати бібліотеку ggplot, яка створює готові до публікації графіки. Основний синтаксис цієї бібліотеки:

ggplot(data, mapping = aes()) +
geometric object 

arguments: 
data: dataset used to plot the graph 
mapping: Control the x and y-axis 
geometric object: The type of plot you want to show. The most common objects are:

- Point: `geom_point()`
- Bar: `geom_bar()`
- Line: `geom_line()`
- Histogram: `geom_histogram()` 

У цьому посібнику вас цікавить геометричний об’єкт geom_bar(), який створює гістограму.

Стовпчаста діаграма: кол

Ваш перший графік показує частоту циліндра з geom_bar(). Наведений нижче код є найпростішим синтаксисом.

library(ggplot2)
# Most basic bar chart
ggplot(mtcars, aes(x = factor(cyl))) +
    geom_bar()

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

  • Ви передаєте набір даних mtcars до ggplot.
  • Всередині аргументу aes() ви додаєте вісь x як факторну змінну (cyl)
  • Знак + означає, що ви хочете, щоб R продовжував читати код. Це робить код більш читабельним, розбиваючи його.
  • Використовуйте geom_bar() для геометричного об’єкта.

вихід:

Стовпчаста діаграма: кол

Примітка:: переконайтеся, що ви перетворили змінні на фактор, інакше R розглядатиме змінні як числові. Дивіться приклад нижче.

Стовпчаста діаграма: кол

Налаштуйте графік

Для налаштування графіка можна передати чотири аргументи:

- `stat`: Control the type of formatting. By default, `bin` to plot a count in the y-axis. For continuous value, pass `stat = "identity"`
- `alpha`: Control density of the color
- `fill`: Change the color of the bar
- `size`: Control the size the bar	

Змініть колір смужок

Ви можете змінити колір смужок. Зауважте, що всі кольори смужок однакові.

# Change the color of the bars
ggplot(mtcars, aes(x = factor(cyl))) +
    geom_bar(fill = "coral") +
    theme_classic()

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

  • Кольори смужок контролюються відображенням aes() всередині геометричного об’єкта (тобто не в ggplot()). Ви можете змінити колір за допомогою аргументів заповнення. Тут ви вибираєте кораловий колір.

вихід:

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

Ви можете використовувати цей код:

grDevices::colors()

щоб побачити всі кольори, доступні в R. Існує близько 650 кольорів.

Змініть інтенсивність

Ви можете збільшити або зменшити інтенсивність кольору смуг

# Change intensity
ggplot(mtcars,
        aes(factor(cyl))) +
    geom_bar(fill = "coral",
        alpha = 0.5) +
    theme_classic()

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

  • Щоб збільшити/зменшити інтенсивність смуги, ви можете змінити значення альфа. Велика альфа збільшує інтенсивність, а низька альфа зменшує інтенсивність. альфа коливається від 0 до 1. Якщо 1, то колір збігається з палітрою. Якщо 0, колір білий. Ви обираєте альфа = 0.1.

вихід:

Змініть інтенсивність

Розфарбуй по групах

Ви можете змінювати кольори смужок, тобто один інший колір для кожної групи. Наприклад, змінна cyl має три рівні, тоді ви можете побудувати гістограму трьома кольорами.

# Color by group
ggplot(mtcars, aes(factor(cyl),
        fill = factor(cyl))) +
    geom_bar()

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

  • Аргумент fill всередині aes() дозволяє змінювати колір панелі. Ви змінюєте колір, встановлюючи fill = x-axis variable. У вашому прикладі змінна осі x є циліндром; fill = фактор (cyl)

вихід:

Колір за групами

Додайте групу в барах

Ви можете додатково розділити вісь y на основі іншого рівня факторів. Наприклад, ви можете порахувати кількість автоматичних і механічних коробок передач залежно від типу циліндра.

Ви будете діяти наступним чином:

  • Крок 1: Створіть фрейм даних із набором даних mtcars
  • Крок 2. Позначте змінну am auto для автоматичної трансмісії та man для ручної трансмісії. Перетворіть am і cyl як коефіцієнт, щоб вам не потрібно було використовувати factor() у функції ggplot().
  • Крок 3: побудуйте гістограму, щоб підрахувати кількість передач циліндрами
library(dplyr)
# Step 1
data <- mtcars % > % 
#Step 2
mutate(am = factor(am, labels = c("auto", "man")),
    cyl = factor(cyl))

У вас готовий набір даних, ви можете побудувати графік;

# Крок 3

ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar() +
    theme_classic()

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

  • Gggplot() містить дані набору даних і aes().
  • У aes() ви включаєте змінну вісь x і яка змінна потрібна для заповнення смужки (тобто am)
  • geom_bar(): Створення гістограми

вихід:

Додайте групу в панелі

Відображення заповнить смужку двома кольорами, по одному для кожного рівня. Групу легко змінити, вибравши інші факторні змінні в наборі даних.

Гістограма у відсотках

Ви можете візуалізувати смужку у відсотках замість необробленої кількості.

# Гістограма у відсотках

ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar(position = "fill") +
    theme_classic()

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

  • Використовуйте position = “fill” в аргументі geom_bar(), щоб створити графік із відсотками на осі Y.

вихід:

Стовпчаста діаграма у відсотках

Бари поруч

Легко побудувати гістограму з груповою змінною поруч.

# Bar chart side by side
ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar(position = position_dodge()) +
    theme_classic()

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

  • position=position_dodge(): явно вказує, як розташувати смуги

вихід:

Бари поруч

Гістограма

У другій частині посібника зі створення гістограми ви можете представити групу змінних зі значеннями на осі Y.

Ваше завдання — побудувати графік із середньою милею на галон для кожного типу циліндрів. Щоб намалювати інформативний графік, виконайте такі дії:

  • Крок 1: Створіть нову змінну із середньою милею на галон на циліндр
  • Крок 2. Створіть базову гістограму
  • Крок 3: Змініть орієнтацію
  • Крок 4: Змініть колір
  • Крок 5: Змініть розмір
  • Крок 6. Додайте мітки до графіка

Крок 1) Створіть нову змінну

Ви створюєте кадр даних під назвою data_histogram, який просто повертає середнє значення миль на галон за кількістю циліндрів у автомобілі. Ви називаєте цю нову змінну mean_mpg і округляєте середнє значення двома десятковими знаками.

# Крок 1

data_histogram <- mtcars % > %
mutate(cyl = factor(cyl)) % > %
group_by(cyl) % > %
summarize(mean_mpg = round(mean(mpg), 2))

Крок 2) Створіть базову гістограму

Ви можете побудувати гістограму. Він не готовий до спілкування, щоб бути доставленим клієнту, але дає нам інтуїтивне уявлення про тенденцію.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) +
    geom_bar(stat = "identity")

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

  • Тепер aes() має дві змінні. Змінна cyl відноситься до осі x, а mean_mpg – до осі y.
  • Вам потрібно передати аргумент stat=”identity”, щоб посилатися на змінну на осі Y як числове значення. geom_bar використовує stat=”bin” як значення за замовчуванням.

вихід:

Гістограма

Крок 3) Змініть орієнтацію

Ви змінюєте орієнтацію графіка з вертикальної на горизонтальну.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) +
    geom_bar(stat = "identity") +
    coord_flip()

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

  • Ви можете контролювати орієнтацію графіка за допомогою coord_flip().

вихід:

Гістограма

Крок 4) Змінити колір

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

ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) +
    geom_bar(stat = "identity") +
    coord_flip() +
    theme_classic()

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

  • Ви можете побудувати графік за групами за допомогою відображення fill=cyl. R автоматично піклується про кольори на основі рівнів змінної cyl

вихід:

Гістограма

Крок 5) Змінити розмір

Щоб графік виглядав красивіше, ви зменшуєте ширину стовпчика.

graph <- ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) +
    geom_bar(stat = "identity",
        width = 0.5) +
    coord_flip() +
    theme_classic()

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

  • Аргумент ширини в geom_bar() керує розміром смуги. Більше значення збільшує ширину.
  • Зверніть увагу, що ви зберігаєте графік у графі змінних. Ви робите це тому, що наступний крок не змінить код графіка змінної. Це покращує читабельність коду.

вихід:

Гістограма

Крок 6) Додайте мітки до графіка

Останній крок полягає в додаванні значення змінної mean_mpg до мітки.

graph +
    geom_text(aes(label = mean_mpg),
        hjust = 1.5,
        color = "white",
        size = 3) +
    theme_classic()

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

  • Функція geom_text() корисна для контролю естетики тексту.
    • label=: додайте мітку всередину смуг
    • mean_mpg: використовуйте змінну mean_mpg для мітки
  • hjust контролює розташування мітки. Значення, близькі до 1, відображають мітку у верхній частині панелі, а більші значення переносять мітку внизу. Якщо орієнтація графіка вертикальна, змініть hjust на vjust.
  • color=”white”: змінити колір тексту. Тут ви використовуєте білий колір.
  • size=3: встановити розмір тексту.

вихід:

Гістограма

Підсумки

Гістограма корисна, коли вісь х є категоріальною змінною. Вісь Y може бути підрахунком або підсумковою статистикою. У наведеній нижче таблиці підсумовано, як керувати гістограмою за допомогою ggplot2:

мета код
Рахувати
ggplot(df, eas(x= factor(x1)) + geom_bar()
Граф з різним кольором заливки
ggplot(df, eas(x= factor(x1), fill = factor(x1))) + geom_bar()
Лічити групами, складеними
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge())
Порахуйте з групами, пліч-о-пліч
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar()
Підрахувати з групами, складеними у %
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge())
Цінності
ggplot(df, eas(x= factor(x1)+ y = x2) + geom_bar(stat="identity")