Точечная диаграмма в R с использованием ggplot2 (с примером)

Содержание:

Anonim

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

Работа специалиста по данным можно увидеть на следующей картинке.

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

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

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

  • пакет ggplot2
  • Диаграмма рассеяния
  • Изменить ось
  • Диаграмма рассеяния с подобранными значениями
  • Добавить информацию на график
  • Переименовать ось X и ось Y
  • Контролировать весы
  • Тема
  • Сохранить участки

пакет ggplot2

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

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

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

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

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

Базовый синтаксис ggplot2:

ggplot(data, mapping=aes()) +geometric objectarguments:data: Dataset used to plot the graphmapping: Control the x and y-axisgeometric 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. Вы начинаете с построения диаграммы рассеяния переменной миль на галлон и переменной 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 (цвет = коэффициент (шестерня)), который меняет цвет точек.

Выход:

Изменить ось

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

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

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

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

Выход:

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

  • glm
  • игра
  • лесс: значение по умолчанию
  • обод

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

Пока мы не добавляли информацию в графики. Графики должны быть информативными. Читатель должен увидеть историю анализа данных, просто взглянув на график, не обращаясь к дополнительной документации. Следовательно, графики нуждаются в хороших надписях. Вы можете добавлять метки с помощью функции 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-axisExample:lab(title = "Hello Guru99", subtitle = "My first plot")

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

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

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

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

  • my_graph: Вы используете сохраненный вами график. Это позволяет избежать перезаписи всех кодов каждый раз, когда вы добавляете новую информацию на график.
  • Вы помещаете заголовок внутрь lab ().
  • Код красного цвета линии
  • se = FALSE: не отображать стандартную ошибку
  • size = 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 <-2010paste("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" 

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

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

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

  • Внутри lab () вы добавили:
    • 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")

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

  • Внутри lab () вы добавили:
    • x = "Определение Drat": изменить имя оси 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 () управляет осью x .
  • Параметр 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.webp")

Выход:

## Saving 5 x 4 in image

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

# Run this code to create thefunctionopen_folder <- function(dir) {if (.Platform['OS.type'] == "windows") {shell.exec(dir)} else {system(paste(Sys.getenv("R_BROWSER"), dir))}}# Call thefunction 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"))

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

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

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

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.webp")