Стовпчаста діаграма та гістограма в R з прикладом

⚡ Розумний підсумок

Стовпчаста діаграма та гістограма в R будуються за допомогою ggplot2, використовуючи geom_bar() для категоріального підрахунку та geom_histogram() для неперервних розподілів. У цьому посібнику налаштовується колір, група...ping, стекування, орієнтація, групування та внутрішньострокові мітки на наборі даних mtcars.

  • 📊 Основна відмінність: Стовпчаста діаграма підсумовує категоріальну змінну, тоді як гістограма розбиває одну безперервну змінну на інтервали.
  • 🧱 Граматика графіки: Кожен графік поєднує набір даних, карту aes()ping, та геометричний об'єкт, з'єднаний знаком плюс.
  • 🎨 Контроль кольору: Для заповнення одним рівномірним кольором помістіть заливку в geom_bar(), а для розфарбовування смуг за групами – в aes().
  • 📐 Коригування положення: position = “fill” перетворює кількість у відсотки, а position_dodge() розміщує згруповані стовпці поруч.
  • 🔢 Побудова значень: Pass stat = «ідентичність», коли вісь Y вже містить обчислену статистику, таку як групове середнє значення.
  • 📏 Гістограма бінінгу: Встановіть інтервали або ширину інтервалів у geom_histogram(), оскільки значення за замовчуванням у 30 інтервалів рідко підходить для даних.

Гістограма стовпчастої діаграми в R

Що таке стовпчаста діаграма в R?

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

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

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

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

Оскільки гістограма виглядає дуже схоже, варто з'ясувати різницю, перш ніж писати будь-який код.

Гістограма проти гістограми в R: ключові відмінності

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

Критерії Гістограма Гістограма
Змінна осі X Категоричний або факторний Безперервний та числовий
Що символізує смужка Одна категорія Один інтервал, або бін, значень
Проміжки між прутками Так, категорії розділені Ні, контейнери розташовані поруч.
Барне замовлення Можна вільно переставляти Фіксується числовою шкалою
Відповідь на запитання Як порівнюються групи? Як розподілена одна змінна?
об'єкт ggplot2 geom_bar() geom_histogram()

Емпіричне правило: якщо зміна порядку стовпців все ще має сенс, у вас є стовпчаста діаграма. Якщо ж зміна їх порядку втрачає сенс, у вас є гістограма. Для квартильних зведень тієї ж безперервної змінної використовуйте коробкова діаграма.

Як створити стовпчасту діаграму в R

Щоб створити графік у 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_histogram() для безперервних даних.

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

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

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

Code Пояснення

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

вихід:

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

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

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

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

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

- `stat`: Controls what is plotted on the y-axis. By default `count`, which tallies rows. To plot a value you already computed, 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()

Code Пояснення

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

вихід:

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

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

grDevices::colors()

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

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

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

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

Code Пояснення

  • Щоб збільшити/зменшити інтенсивність смуги, ви можете змінити значення альфи. Велика альфа збільшує інтенсивність, а низька альфа зменшує її. Альфа коливається від 0 до 1. При значенні 1 колір точно відповідає палітрі; при 0 смуга невидима. Тут ви вибираєте альфу = 0.5.

вихід:

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

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

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

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

Code Пояснення

  • Аргумент fill всередині aes() змінює колір смужки. Ви змінюєте колір, встановлюючи fill = змінна осі x. У вашому прикладі змінна осі x — це cyl; fill = factor(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()

Code Пояснення

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

вихід:

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

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

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

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

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

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

Code Пояснення

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

вихід:

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

Бари поруч

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

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

Code Пояснення

  • 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")

Code Пояснення

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

вихід:

Гістограма

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

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

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

Code Пояснення

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

вихід:

Гістограма

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

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

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

Code Пояснення

  • Ви можете побудувати графік за групами за допомогою карти fill=cylpingR автоматично піклується про кольори на основі рівнів змінної 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()

Code Пояснення

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

вихід:

Гістограма

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

На останньому кроці значення mean_mpg додано як мітку всередині кожного стовпчика.

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

Code Пояснення

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

вихід:

Гістограма

Як упорядкувати та позначити стовпці на стовпчастій діаграмі в R

Два останні штрихи відрізняють чернетку діаграми від публікуємої: сортування стовпчиків за значеннями та правильне маркування осей.

Зміна порядку стовпців. ggplot2 за замовчуванням упорядковує рівні факторів в алфавітному порядку, що рідко є найінформативнішим порядком. Помістіть змінну x у reorder() для сортування за другою змінною:

# Sort the bars from lowest to highest mean_mpg
ggplot(data_histogram, aes(x = reorder(cyl, mean_mpg), y = mean_mpg)) +
    geom_bar(stat = "identity", fill = "coral") +
    theme_classic()

Додайте перед змінною сортування знак мінус, reorder(cyl, -mean_mpg), щоб змінити напрямок у зворотному напрямку.

Додавання заголовків та підписів осей. Функція labs() встановлює кожен текстовий елемент за один виклик:

ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) +
    geom_bar(stat = "identity") +
    labs(title = "Average fuel economy by cylinder count",
        subtitle = "mtcars dataset",
        x = "Number of cylinders",
        y = "Mean miles per gallon",
        fill = "Cylinders",
        caption = "Source: mtcars") +
    theme_classic()

Встановіть fill = NULL всередині labs(), щоб повністю видалити назву легенди, та використовуйте theme(legend.position = “none”), щоб видалити легенду, коли вісь x вже містить назви груп.

Вибір власних кольорів. Замініть палітру за замовчуванням на явну, щоб діаграма відповідала стилю вашого будинку:

scale_fill_manual(values = c("4" = "#0e9cd1", "6" = "coral", "8" = "grey40"))

Як створити гістограму в R за допомогою geom_histogram()

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

library(ggplot2)
# Most basic histogram
ggplot(mtcars, aes(x = mpg)) +
    geom_histogram()

R виводить повідомлення з рекомендацією вибрати кращу кількість контейнерів, оскільки значення за замовчуванням 30 контейнерів є довільним. Цим керують два аргументи:

  • бункерів: кількість інтервалів, на які потрібно розділити діапазон.
  • ширина контейнера: ширина кожного інтервалу, виражена в одиницях змінної. Використовуйте цей варіант, коли одиниці вимірювання мають значення.
# Set the number of bins
ggplot(mtcars, aes(x = mpg)) +
    geom_histogram(bins = 10, fill = "coral", color = "white") +
    theme_classic()

# Or set the width of each bin instead
ggplot(mtcars, aes(x = mpg)) +
    geom_histogram(binwidth = 4, fill = "coral", color = "white") +
    theme_classic()

Біннінг – це найважливіший вибір у гістограмі. Занадто мало інтервалів приховують реальну структуру, таку як другий пік; занадто багато перетворюють діаграму на шум. Спробуйте кілька значень, перш ніж зупинитися на одному.

Порівняння груп. Відобразіть коефіцієнт для заповнення та встановіть позицію, щоб розподіли залишалися читабельними:

ggplot(mtcars, aes(x = mpg, fill = factor(cyl))) +
    geom_histogram(bins = 10, position = "identity", alpha = 0.5) +
    theme_classic()

З position = “identity” та зменшеною альфою гістограми перекриваються, тому ви можете безпосередньо порівнювати фігури. Використовуйте position = “dodge”, якщо ви бажаєте бачити контейнери поруч.

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

ggplot(mtcars, aes(x = mpg)) +
    geom_histogram(aes(y = after_stat(density)), bins = 10,
        fill = "coral", alpha = 0.6) +
    geom_density(color = "steelblue", linewidth = 1) +
    theme_classic()

Стовпчаста діаграма та гістограма в R: Code Посилання

Стовпчаста діаграма підходить для категоріальної осі x, де вісь y є або кількістю, або зведеною статистикою. У таблиці нижче наведено виклик ggplot2 для кожного варіанта, розглянутого вище:

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

Поширені запитання

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

Всередині aes() fill відповідає змінній кольору, тому кожна група отримує свій власний відтінок. Поза aes(), всередині geom_bar(), fill — це фіксоване значення, що застосовується до кожного стовпця.

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

Гістограми – це стандартний перший крок у дослідницькому аналізі даних для проектів штучного інтелекту, який виявляє перекіс, викиди та дисбаланс класів ще до навчання будь-якої моделі. Потім стовпчикові діаграми підсумовують важливість ознак та частоту категорій.

Так. Помічники ШІ можуть створювати шари ggplot2 на основі простого опису діаграми та пояснювати помилки, такі як відсутній аргумент статистики. Завжди запускайте згенерований код на власних даних, щоб підтвердити карту.ping правильно.

Підсумуйте цей пост за допомогою: