Графіки - це третя частина процесу аналізу даних. Перша частина стосується вилучення даних , друга частина стосується очищення та обробки даних . Нарешті, вченому з даних може знадобитися графічно повідомити свої результати .
Роботу вченого з даних можна переглянути на наступному малюнку
- Першим завданням вченого з даних є визначення питання дослідження. Це питання дослідження залежить від цілей та цілей проекту.
- Після цього одним з найвидатніших завдань є розробка функцій. Науковцю даних потрібно збирати, маніпулювати та очищати дані
- Коли цей крок завершено, він може розпочати вивчення набору даних. Іноді доводиться уточнити та змінити початкову гіпотезу завдяки новому відкриттю.
- Коли досягнуто пояснювального аналізу, дослідник даних повинен врахувати здатність читача зрозуміти основні концепції та моделі .
- Його результати повинні бути представлені у форматі, зрозумілому для всіх зацікавлених сторін. Одним з найкращих методів передачі результатів є графік .
- Графіки - неймовірний інструмент для спрощення складного аналізу.
У цьому підручнику ви дізнаєтесь-
- пакет ggplot2
- Діаграма розкиду
- Змінити вісь
- Графічний розкид із встановленими значеннями
- Додайте інформацію на графік
- Перейменуйте вісь х та вісь у
- Контролюйте ваги
- Тема
- Зберегти ділянки
пакет 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. Ви починаєте з побудови діаграми розсіювання змінної 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 (колір = коефіцієнт (передача)), який змінює колір крапок.
Вихід:
Змінити вісь
Повторне масштабування даних - це велика частина роботи вченого з даних. У рідкісних випадках дані надходять у гарній формі дзвона. Одним із рішень, щоб зробити ваші дані менш чутливими до викидів, є їх масштабування.
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: Ви зберігаєте свій графік у змінному графіку. Це корисно для подальшого використання або уникати занадто складних рядків кодів
- Аргумент 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: Ви використовуєте збережений графік. Це дозволяє уникнути переписування всіх кодів кожного разу, коли ви додаєте нову інформацію на графік.
- Ви загортаєте заголовок всередину лабораторії ().
- Код для червоного кольору рядка
- 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"
Ви можете додати динамічне ім'я до нашого графіку, а саме середнє значення 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 = "Співвідношення між милями на годину та drat": Додайте заголовок
- subtitle = "Відносини розбиті за класом передач": Додайте підзаголовок
- caption = "Власне обчислення авторів: Додати підпис
- Ви відокремлюєте кожну нову інформацію комами,,
- Зверніть увагу, що ви ламаєте рядки коду. Це не є обов’язковим, і це лише допомагає легше читати код
Вихід:
Перейменуйте вісь х та вісь у
Самі змінні в наборі даних не завжди можуть бути явними, або за домовленістю використовують _, коли є кілька слів (тобто 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 = "Визначення 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
Ви можете керувати масштабом осі х та осі у, як показано нижче
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 .
- Параметр розбиття контролює розділення осі. Ви можете вручну додати послідовність чисел або скористатися функцією 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_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") |