Учебники

22) Разброс сюжета с помощью ggplot2

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

Работа ученого данных может быть рассмотрена в следующей картине

  • Первая задача исследователя данных — определить вопрос исследования. Этот вопрос исследования зависит от целей и задач проекта.
  • После этого одной из самых важных задач является разработка функций. Специалист по данным должен собирать, манипулировать и очищать данные
  • Когда этот шаг завершен, он может начать исследовать набор данных. Иногда необходимо уточнить и изменить исходную гипотезу из-за нового открытия.

  • Когда проводится объяснительный анализ, ученый, работающий с данными, должен учитывать способность читателя понимать основные концепции и модели .
  • Его результаты должны быть представлены в формате, понятном для всех заинтересованных сторон. Один из лучших способов сообщить о результатах через график .
  • Графики являются невероятным инструментом для упрощения сложного анализа.

В этом уроке вы узнаете

пакет ggplot2

Эта часть руководства посвящена тому, как создавать графики / диаграммы с помощью R.

В этом уроке вы собираетесь использовать пакет ggplot2. Этот пакет построен на непротиворечивой основе книги «Грамматика графики», написанной Уилкинсоном, 2005. ggplot2 очень гибок, включает в себя множество тем и спецификацию сюжетов на высоком уровне абстракции. С ggplot2 вы не можете создавать трехмерную графику и создавать интерактивную графику.

В ggplot2 граф состоит из следующих аргументов:

  • данные
  • эстетическое картографирование
  • геометрический объект
  • статистические преобразования
  • Весы
  • система координат
  • корректировки положения
  • огранка

Вы узнаете, как управлять этими аргументами в руководстве.

Основной синтаксис ggplot2:

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 object are:
 
- Point: `geom_point()` 
- Bar: `geom_bar()`
- Line: `geom_line()` 
- Histogram: `geom_histogram()`

разброс точек

Давайте посмотрим, как ggplot работает с набором данных mtcars. Вы начинаете с построения диаграммы рассеяния переменной mpg и переменной drat.

Основной точечный график

library(ggplot2)
ggplot(mtcars, aes(x = drat, y = mpg)) +
    geom_point()

Код Объяснение

  • Сначала вы передаете набор данных mtcars в ggplot.
  • Внутри аргумента aes () вы добавляете оси X и Y.
  • Знак + означает, что вы хотите, чтобы R продолжал читать код. Это делает код более читабельным, разбивая его.
  • Используйте geom_point () для геометрического объекта.

Вывод:

Разброс сюжета с группами

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

ggplot(mtcars, aes(x = mpg, y = drat)) +
    geom_point(aes(color = factor(gear)))

Код Объяснение

  • Aes () внутри geom_point () контролирует цвет группы. Группа должна быть фактор-переменной. Таким образом, вы конвертируете переменную передачу в коэффициент.
  • В целом у вас есть код aes (color = factor (gear)), который меняет цвет точек.

Вывод:

Изменить ось

Масштабирование данных — большая часть работы исследователя данных. В редких случаях данные поступают в форме колокольчиков. Одним из решений, которое сделает ваши данные менее чувствительными к выбросам, является их масштабирование.

ggplot(mtcars, aes(x = log(mpg), y = log(drat))) +
    geom_point(aes(color = factor(gear)))

Код Объяснение

  • Вы преобразуете переменные x и y в log () непосредственно внутри отображения aes ().

Обратите внимание, что может быть применено любое другое преобразование, такое как стандартизация или нормализация.

Вывод:

Диаграмма рассеяния с подобранными значениями

Вы можете добавить другой уровень информации на график. Вы можете построить подходящее значение линейной регрессии.

my_graph <- ggplot(mtcars, aes(x = log(mpg), y = log(drat))) +
    geom_point(aes(color = factor(gear))) +
    stat_smooth(method = "lm",
        col = "#C42126",
        se = FALSE,
        size = 1)
my_graph

Код Объяснение

  • график: вы сохраняете свой график в переменной графа. Это полезно для дальнейшего использования или избегать слишком сложной строки кодов
  • Аргумент stat_smooth () управляет методом сглаживания
  • method = «lm»: линейная регрессия
  • col = «# C42126»: код для красного цвета линии
  • se = FALSE: не отображать стандартную ошибку
  • размер = 1: размер строки 1

Вывод:

Обратите внимание, что доступны другие методы сглаживания

  • GLM
  • лечь в дрейф
  • loess: значение по умолчанию
  • ободок

Добавить информацию на график

Пока что мы не добавили информацию в графики. Графики должны быть информативными. Читатель должен увидеть историю анализа данных, просто взглянув на график, не обращаясь к дополнительной документации. Следовательно, для графиков нужны хорошие метки. Вы можете добавить метки с помощью функции labs ().

Основной синтаксис для lab ():

lab(title = "Hello Guru99")
argument:
- title: Control the title. It is possible to change or add title with:			
- subtitle: Add subtitle below title			
- caption: Add caption below the graph			
- x: rename x-axis			
- y: rename y-axis			
Example:lab(title = "Hello Guru99", subtitle = "My first plot")	

Добавить заголовок

Одна обязательная информация для добавления — это, очевидно, заголовок.

my_graph +
    labs(
        title = "Plot Mile per hours and drat, in log"
         )

Код Объяснение

  • my_graph: вы используете график, который вы сохранили. Это позволяет избежать переписывания всех кодов каждый раз, когда вы добавляете новую информацию в график.
  • Вы оборачиваете заголовок внутри лаборатории ().
  • Код для красного цвета линии
  • se = FALSE: не отображать стандартную ошибку
  • размер = 1: размер строки 1

Вывод:

Добавить заголовок с динамическим именем

Динамический заголовок полезен для добавления более точной информации в заголовок.

Вы можете использовать функцию paste () для печати статического и динамического текста. Основной синтаксис paste ():

paste("This is a text", A)
arguments
- " ": Text inside the quotation marks are the static text
- A: Display the variable stored in A
- Note you can add as much static text and variable as you want. You need to separate them with a comma	

Пример:

A <-2010
paste("The first year is", A)

Вывод:

## [1] "The first year is 2010"
B <-2018

paste("The first year is", A, "and the last year is", B)

Вывод:

## [1] "The first year is 2010 and the last year is 2018"	

Вы можете добавить динамическое имя к нашему графику, а именно среднее значение mpg.

mean_mpg <- mean(mtcars$mpg)
my_graph + labs(
    title = paste("Plot Mile per hours and drat, in log. Average mpg is", mean_mpg)
)

Код Объяснение

  • Вы создаете среднее значение mpg со средним значением (mtcars $ mpg), хранящимся в переменной mean_mpg
  • Вы используете paste () с mean_mpg для создания динамического заголовка, возвращающего среднее значение mpg

Вывод:

Добавить субтитр

Две дополнительные детали могут сделать ваш график более явным. Вы говорите о субтитрах и подписи. Подзаголовок идет прямо под заголовком. Заголовок может сообщить о том, кто сделал вычисления и источник данных.

my_graph +
    labs(
        title =
        "Relation between Mile per hours and drat",
        subtitle =
        "Relationship break down by gear class",
        caption = "Authors own computation"
    )

Код Объяснение

  • Внутри лаборатории () вы добавили:
    • title = «Отношение между милей в часах и драхтой»: Добавить заголовок
    • subtitle = «Разбивка отношений по классам снастей»: Добавить субтитры
    • caption = «Авторы собственных вычислений: добавить заголовок
    • Вы разделяете каждую новую информацию запятой,
  • Обратите внимание, что вы разбиваете строки кода. Это не обязательно, и это только помогает читать код легче

Вывод:

Переименовать ось X и Y

Сама переменная в наборе данных может не всегда быть явной, или по соглашению использовать _, когда есть несколько слов (например, GDP_CAP). Вы не хотите, чтобы такое имя появилось на вашем графике. Важно изменить имя или добавить больше деталей, например, единиц измерения.

my_graph +
    labs(
        x = "Drat definition",
        y = "Mile per hours",
        color = "Gear",
        title = "Relation between Mile per hours and drat",
        subtitle = "Relationship break down by gear class",
        caption = "Authors own computation"
    )

Код Объяснение

  • Внутри лаборатории () вы добавили:
    • x = «Определение чертежа»: изменить имя оси X
    • y = «миля в часах»: изменить имя оси y

Вывод:

Контролировать весы

Вы можете контролировать масштаб оси.

Функция seq () удобна, когда вам нужно создать последовательность чисел. Основной синтаксис:

seq(begin, last, by = x)
arguments:
- begin: First number of the sequence
- last: Last number of the sequence
- by= x: The step. For instance, if x is 2, the code adds 2 to `begin-1` until it reaches `last`	

Например, если вы хотите создать диапазон от 0 до 12 с шагом 3, у вас будет четыре числа, 0 4 8 12

seq(0, 12,4)

Вывод:

## [1]  0  4  8 12	

Вы можете контролировать масштаб оси X и Y, как показано ниже

my_graph +
    scale_x_continuous(breaks = seq(1, 3.6, by = 0.2)) +
    scale_y_continuous(breaks = seq(1, 1.6, by = 0.1)) +
    labs(
        x = "Drat definition",
        y = "Mile per hours",
        color = "Gear",
        title = "Relation between Mile per hours and drat",
        subtitle = "Relationship break down by gear class",
        caption = "Authors own computation"
    )

Код Объяснение

  • Функция scale_y_continuous () управляет осью Y
  • Функция scale_x_continuous () контролирует ось х .
  • Параметр breaks управляет разбиением оси. Вы можете вручную добавить последовательность чисел или использовать функцию seq ():
    • seq (1, 3.6, by = 0.2): создайте шесть чисел от 2.4 до 3.4 с шагом 3
    • seq (1, 1.6, by = 0.1): создайте семь чисел от 1 до 1.6 с шагом 1

Вывод:

тема

Наконец, R позволяет нам настроить сюжет с различными темами. Библиотека ggplot2 включает в себя восемь тем:

  • theme_bw ()
  • theme_light ()
  • theme_classis ()
  • theme_linedraw ()
  • theme_dark ()
  • theme_minimal ()
  • theme_gray ()
  • theme_void ()
my_graph +
    theme_dark() +
    labs(
        x = "Drat definition, in log",
        y = "Mile per hours, in log",
        color = "Gear",
        title = "Relation between Mile per hours and drat",
        subtitle = "Relationship break down by gear class",
        caption = "Authors own computation"
    )

Вывод:

Сохранить участки

После всех этих шагов пришло время сохранить и поделиться своим графиком. Вы добавляете ggsave («ИМЯ ФАЙЛА») сразу после построения графика, и он будет сохранен на жестком диске.

График сохраняется в рабочем каталоге. Чтобы проверить рабочий каталог, вы можете запустить этот код:

directory <-getwd()
directory		

Давайте построим ваш фантастический график, сохраним его и проверим местоположение

my_graph +
    theme_dark() +
    labs(
        x = "Drat definition, in log",
        y = "Mile per hours, in log",
        color = "Gear",
        title = "Relation between Mile per hours and drat",
        subtitle = "Relationship break down by gear class",
        caption = "Authors own computation"
    )

Вывод:

ggsave("my_fantastic_plot.png")

Вывод:

## Saving 5 x 4 in image

Примечание : только для педагогических целей мы создали функцию open_folder (), чтобы открыть папку каталога для вас. Вам просто нужно запустить код ниже и посмотреть, где хранится картинка. Вы должны увидеть имена файлов my_fantastic_plot.png.

# Run this code to create the
function
open_folder <- function(dir) {
    if (.Platform['OS.type'] == "windows") {
        shell.exec(dir)
    } else {
        system(paste(Sys.getenv("R_BROWSER"), dir))
    }
}

# Call the
function to open the folder open_folder(directory)

Резюме

Вы можете суммировать аргументы для создания точечной диаграммы в таблице ниже:

Задача

Код

Основной точечный график

ggplot(df, aes(x = x1, y = y)) + geom_point()

Точечный график с цветовой группой

ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) + stat_smooth(method = "lm")

Добавить подходящие значения

ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1))

Добавить заголовок

ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(title = paste("Hello Guru99"))

Добавить субтитры

ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(subtitle = paste("Hello Guru99"))

Переименовать х

ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(x = "X1")

Переименовать у

ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(y = "y1")

Контролировать весы

ggplot(df, aes(x = x1, y = y)) + geom_point() + scale_y_continuous(breaks = seq(10, 35, by = 10)) + scale_x_continuous(breaks = seq(2, 5, by = 1)

Создать журналы

ggplot(df, aes(x =log(x1), y = log(y))) + geom_point()

тема

ggplot(df, aes(x = x1, y = y)) + geom_point() + theme_classic()

Сохранить

ggsave("my_fantastic_plot.png")