Гистограмма и гистограмма в R (с примером)

Гистограмма — отличный способ отобразить категориальные переменные по оси X. Этот тип графика обозначает два аспекта по оси Y.

  1. Первый подсчитывает количество вхождений между группами.
  2. Второй показывает сводную статистику (минимальную, максимальную, среднюю и т. д.) переменной по оси Y.

Вы будете использовать набор данных mtcars со следующими переменными:

  • цил: Номер цилиндра в автомобиле. Числовая переменная
  • am: Тип передачи. 0 для автоматического и 1 для ручного режима. Числовая переменная
  • миль на галлон: миль на галлон. Числовая переменная

Как создать гистограмму

Чтобы создать график в 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. В вашем примере переменная оси X — это 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()

Код Пояснение

  • ggpplot() содержит данные набора данных и функцию aes().
  • В aes() вы включаете переменную оси X и указываете, какая переменная необходима для заполнения полосы (т. е. am).
  • geom_bar(): создать гистограмму.

Вывод:

Добавить группу в барах

При сопоставлении полоса заполнится двумя цветами, по одному для каждого уровня. Изменить группу, выбрав другие факторные переменные в наборе данных, не составляет труда.

Гистограмма в процентах

Вы можете визуализировать полосу в процентах, а не в необработанных значениях.

# Гистограмма в процентах

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

Код Пояснение

  • Используйте позицию = «заполнить» в аргументе 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: установите размер текста.

Вывод:

Гистограмма

Итого

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

Цель Code
Количество
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")