Стълбовидна диаграма и хистограма в R (с пример)

Стълбовидната диаграма е чудесен начин за показване на категорични променливи по оста x. Този тип графика обозначава два аспекта на оста 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()

Code Обяснение

  • Предавате набора от данни 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()

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.1.

Изход:

Променете интензитета

Оцветете по групи

Можете да промените цветовете на лентите, което означава един различен цвят за всяка група. Например променливата cyl има три нива, след което можете да начертаете лентовата диаграма с три цвята.

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

Code Обяснение

  • Аргументът 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()

Code Обяснение

  • ggpplot() съдържа данните от набора от данни и aes().
  • В aes() включвате променливата x-axis и коя променлива е необходима за запълване на лентата (т.е. 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”, за да посочите променливата в оста y като числова стойност. geom_bar използва stat=”bin” като стойност по подразбиране.

Изход:

Хистограма

Стъпка 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: Задайте размера на текста.

Изход:

Хистограма

Oбобщение

Стълбовата диаграма е полезна, когато оста 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")

Обобщете тази публикация с: