Гистограмма и гистограмма в R (с примером)
Гистограмма — отличный способ отобразить категориальные переменные по оси X. Этот тип графика обозначает два аспекта по оси Y.
- Первый подсчитывает количество вхождений между группами.
- Второй показывает сводную статистику (минимальную, максимальную, среднюю и т. д.) переменной по оси 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") |