Графики - третья часть процесса анализа данных. Первая часть посвящена извлечению данных , вторая часть касается очистки и обработки данных . Наконец, специалисту по обработке данных, возможно, потребуется представить свои результаты графически .
Работа специалиста по данным можно увидеть на следующей картинке.
- Первая задача специалиста по данным - определить исследовательский вопрос. Этот вопрос исследования зависит от целей и задач проекта.
- После этого одна из самых важных задач - разработка функций. Специалист по данным должен собирать, обрабатывать и очищать данные.
- Когда этот шаг будет завершен, он сможет приступить к изучению набора данных. Иногда бывает необходимо уточнить и изменить исходную гипотезу в связи с новым открытием.
- Когда объяснительный анализ проведен, специалист по анализу данных должен учитывать способность читателя понять лежащие в основе концепции и модели .
- Его результаты должны быть представлены в формате, понятном всем заинтересованным сторонам. Один из лучших способов сообщить результаты - это график .
- Графики - отличный инструмент для упрощения сложного анализа.
В этом руководстве вы узнаете:
- пакет 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 <-2018paste("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") |