Стълбовидна диаграма и хистограма в R (с пример)
Стълбовидната диаграма е чудесен начин за показване на категорични променливи по оста x. Този тип графика обозначава два аспекта на оста y.
- Първият отчита броя на срещанията между групите.
- Вторият показва обобщена статистика (мин., макс., средно и т.н.) на променлива по оста 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. Във вашия пример променливата на оста x е cyl; запълване = фактор (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-axis и коя променлива е необходима за запълване на лентата (т.е. 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: Задайте размера на текста.
Изход:
Oбобщение
Стълбовата диаграма е полезна, когато оста x е категорична променлива. Оста 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") |