You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Data-Science-For-Beginners/translations/uk/3-Data-Visualization/R/09-visualization-quantities
leestott 8dcd54c138
🌐 Update translations via Co-op Translator
3 weeks ago
..
README.md 🌐 Update translations via Co-op Translator 3 weeks ago
assignment.md 🌐 Update translations via Co-op Translator 3 weeks ago

README.md

Візуалізація кількісних даних

Скетчноут від (@sketchthedocs)
Візуалізація кількісних даних - Скетчноут від @nitya

У цьому уроці ви дізнаєтеся, як використовувати деякі з багатьох доступних бібліотек R-пакетів для створення цікавих візуалізацій, пов'язаних із концепцією кількості. Використовуючи очищений набір даних про птахів Міннесоти, ви можете дізнатися багато цікавих фактів про місцеву дику природу.

Тест перед лекцією

Спостереження за розмахом крил за допомогою ggplot2

Відмінною бібліотекою для створення як простих, так і складних графіків і діаграм різних типів є ggplot2. Загалом, процес побудови графіків за допомогою цих бібліотек включає визначення частин вашого датафрейму, які ви хочете використати, виконання необхідних трансформацій даних, призначення значень осей x та y, вибір типу графіка та його відображення.

ggplot2 — це система для декларативного створення графіків, заснована на "Граматиці графіки". Граматика графіки — це загальна схема візуалізації даних, яка розбиває графіки на семантичні компоненти, такі як шкали та шари. Іншими словами, простота створення графіків для одновимірних або багатовимірних даних із мінімальною кількістю коду робить ggplot2 найпопулярнішим пакетом для візуалізації в R. Користувач вказує ggplot2, як зіставити змінні з естетикою, які графічні примітиви використовувати, а ggplot2 виконує решту.

Графік = Дані + Естетика + Геометрія

  • Дані стосуються набору даних
  • Естетика вказує змінні для вивчення (змінні x та y)
  • Геометрія стосується типу графіка (лінійний графік, стовпчаста діаграма тощо)

Виберіть найкращу геометрію (тип графіка) відповідно до ваших даних і історії, яку ви хочете розповісти через графік.

  • Для аналізу трендів: лінійний графік, стовпчаста діаграма
  • Для порівняння значень: стовпчаста діаграма, кругова діаграма, точкова діаграма
  • Для показу, як частини співвідносяться з цілим: кругова діаграма
  • Для показу розподілу даних: точкова діаграма, стовпчаста діаграма
  • Для показу взаємозв’язків між значеннями: лінійний графік, точкова діаграма, бульбашкова діаграма

Ви також можете переглянути цей описовий шпаргалку для ggplot2.

Побудова лінійного графіка для значень розмаху крил птахів

Відкрийте консоль R і імпортуйте набір даних.

Примітка: Набір даних зберігається в корені цього репозиторію в папці /data.

Імпортуємо набір даних і переглянемо його перші 5 рядків.

birds <- read.csv("../../data/birds.csv",fileEncoding="UTF-8-BOM")
head(birds)

Перші рядки даних містять суміш тексту та чисел:

Назва НауковаНазва Категорія Ряд Родина Рід СтатусЗбереження МінДовжина МаксДовжина МінМасаТіла МаксМасаТіла МінРозмахКрил МаксРозмахКрил
0 Чорночеревий свистячий качур Dendrocygna autumnalis Качки/Гуси/Водоплавні Anseriformes Anatidae Dendrocygna LC 47 56 652 1020 76 94
1 Рудий свистячий качур Dendrocygna bicolor Качки/Гуси/Водоплавні Anseriformes Anatidae Dendrocygna LC 45 53 712 1050 85 93
2 Біла гуска Anser caerulescens Качки/Гуси/Водоплавні Anseriformes Anatidae Anser LC 64 79 2050 4050 135 165
3 Гуска Росса Anser rossii Качки/Гуси/Водоплавні Anseriformes Anatidae Anser LC 57.3 64 1066 1567 113 116
4 Велика білолоба гуска Anser albifrons Качки/Гуси/Водоплавні Anseriformes Anatidae Anser LC 64 81 1930 3310 130 165

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

install.packages("ggplot2")
library("ggplot2")
ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) +
  geom_line() 

Тут ви встановлюєте пакет ggplot2, а потім імпортуєте його в робоче середовище за допомогою команди library("ggplot2"). Для побудови будь-якого графіка в ggplot використовується функція ggplot(), і ви вказуєте набір даних, змінні x та y як атрибути. У цьому випадку ми використовуємо функцію geom_line(), оскільки хочемо побудувати лінійний графік.

MaxWingspan-lineplot

Що ви помічаєте одразу? Здається, є принаймні один викид — це досить великий розмах крил! Розмах крил понад 2000 сантиметрів дорівнює більше ніж 20 метрам — чи не літають у Міннесоті птеродактилі? Давайте дослідимо.

Хоча ви могли б швидко відсортувати дані в Excel, щоб знайти ці викиди, які, ймовірно, є помилками, продовжуйте процес візуалізації, працюючи безпосередньо з графіком.

Додайте підписи до осі x, щоб показати, про яких птахів йдеться:

ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) +
  geom_line() +
  theme(axis.text.x = element_text(angle = 45, hjust=1))+
  xlab("Birds") +
  ylab("Wingspan (CM)") +
  ggtitle("Max Wingspan in Centimeters")

Ми вказуємо кут у theme і задаємо підписи осей x та y у xlab() та ylab() відповідно. ggtitle() задає назву графіку.

MaxWingspan-lineplot-improved

Навіть із поворотом підписів на 45 градусів їх занадто багато, щоб прочитати. Спробуємо іншу стратегію: підписати лише ті викиди та розмістити підписи всередині графіка. Ви можете використати точкову діаграму, щоб звільнити більше місця для підписів:

ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) +
  geom_point() +
  geom_text(aes(label=ifelse(MaxWingspan>500,as.character(Name),'')),hjust=0,vjust=0) + 
  theme(axis.title.x=element_blank(), axis.text.x=element_blank(), axis.ticks.x=element_blank())
  ylab("Wingspan (CM)") +
  ggtitle("Max Wingspan in Centimeters") + 

Що тут відбувається? Ви використали функцію geom_point() для побудови точкових діаграм. Завдяки цьому ви додали підписи для птахів із MaxWingspan > 500 і також приховали підписи на осі x, щоб зменшити захаращеність графіка.

Що ви виявляєте?

MaxWingspan-scatterplot

Фільтрація даних

І білоголовий орлан, і прерієвий сокіл, хоча, ймовірно, дуже великі птахи, здається, мають помилкові дані, з додатковим нулем у їхньому максимальному розмаху крил. Малоймовірно, що ви зустрінете білоголового орлана з розмахом крил 25 метрів, але якщо так, будь ласка, повідомте нам! Давайте створимо новий датафрейм без цих двох викидів:

birds_filtered <- subset(birds, MaxWingspan < 500)

ggplot(data=birds_filtered, aes(x=Name, y=MaxWingspan,group=1)) +
  geom_point() +
  ylab("Wingspan (CM)") +
  xlab("Birds") +
  ggtitle("Max Wingspan in Centimeters") + 
  geom_text(aes(label=ifelse(MaxWingspan>500,as.character(Name),'')),hjust=0,vjust=0) +
  theme(axis.text.x=element_blank(), axis.ticks.x=element_blank())

Ми створили новий датафрейм birds_filtered, а потім побудували точкову діаграму. Відфільтрувавши викиди, ваші дані тепер більш узгоджені та зрозумілі.

MaxWingspan-scatterplot-improved

Тепер, коли ми маємо очищений набір даних принаймні щодо розмаху крил, давайте дізнаємося більше про цих птахів.

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

Скільки категорій птахів існує і яка їх кількість?
Скільки птахів є вимерлими, під загрозою зникнення, рідкісними чи звичайними?
Скільки є різних родів і рядів за термінологією Ліннея?

Дослідження стовпчастих діаграм

Стовпчасті діаграми є практичними, коли потрібно показати групування даних. Давайте дослідимо категорії птахів, які є в цьому наборі даних, щоб побачити, яка з них є найпоширенішою за кількістю.
Створимо стовпчасту діаграму на основі відфільтрованих даних.

install.packages("dplyr")
install.packages("tidyverse")

library(lubridate)
library(scales)
library(dplyr)
library(ggplot2)
library(tidyverse)

birds_filtered %>% group_by(Category) %>%
  summarise(n=n(),
  MinLength = mean(MinLength),
  MaxLength = mean(MaxLength),
  MinBodyMass = mean(MinBodyMass),
  MaxBodyMass = mean(MaxBodyMass),
  MinWingspan=mean(MinWingspan),
  MaxWingspan=mean(MaxWingspan)) %>% 
  gather("key", "value", - c(Category, n)) %>%
  ggplot(aes(x = Category, y = value, group = key, fill = key)) +
  geom_bar(stat = "identity") +
  scale_fill_manual(values = c("#D62728", "#FF7F0E", "#8C564B","#2CA02C", "#1F77B4", "#9467BD")) +                   
  xlab("Category")+ggtitle("Birds of Minnesota")

У наступному фрагменті ми встановлюємо пакети dplyr та lubridate, щоб допомогти маніпулювати та групувати дані для побудови складеної стовпчастої діаграми. Спочатку ви групуєте дані за Category птахів, а потім підсумовуєте стовпці MinLength, MaxLength, MinBodyMass, MaxBodyMass, MinWingspan, MaxWingspan. Потім будуєте стовпчасту діаграму за допомогою пакета ggplot2, вказуючи кольори для різних категорій і підписи.

Stacked bar chart

Ця стовпчаста діаграма, однак, є нечитаємою через надто багато негрупованих даних. Вам потрібно вибрати лише ті дані, які ви хочете відобразити, тому давайте подивимося на довжину птахів залежно від їхньої категорії.

Відфільтруйте ваші дані, щоб включити лише категорію птахів.

Оскільки категорій багато, ви можете відобразити цю діаграму вертикально та налаштувати її висоту, щоб врахувати всі дані:

birds_count<-dplyr::count(birds_filtered, Category, sort = TRUE)
birds_count$Category <- factor(birds_count$Category, levels = birds_count$Category)
ggplot(birds_count,aes(Category,n))+geom_bar(stat="identity")+coord_flip()

Спочатку ви рахуєте унікальні значення в стовпці Category, а потім сортуєте їх у новий датафрейм birds_count. Ці відсортовані дані потім враховуються на тому ж рівні, щоб вони були відображені у відсортованому вигляді. Використовуючи ggplot2, ви потім будуєте дані у вигляді стовпчастої діаграми. coord_flip() відображає горизонтальні стовпці.

category-length

Ця стовпчаста діаграма дає гарний огляд кількості птахів у кожній категорії. Одним поглядом ви бачите, що найбільша кількість птахів у цьому регіоні належить до категорії Качки/Гуси/Водоплавні. Міннесота — це "країна 10 000 озер", тому це не дивно!

Спробуйте інші підрахунки в цьому наборі даних. Чи щось вас здивувало?

Порівняння даних

Ви можете спробувати різні порівняння згрупованих даних, створюючи нові осі. Спробуйте порівняти MaxLength птаха залежно від його категорії:

birds_grouped <- birds_filtered %>%
  group_by(Category) %>%
  summarise(
  MaxLength = max(MaxLength, na.rm = T),
  MinLength = max(MinLength, na.rm = T)
           ) %>%
  arrange(Category)
  
ggplot(birds_grouped,aes(Category,MaxLength))+geom_bar(stat="identity")+coord_flip()

Ми групуємо дані birds_filtered за Category, а потім будуємо стовпчасту діаграму.

comparing data

Тут нічого дивного: колібрі мають найменший MaxLength у порівнянні з пеліканами чи гусьми. Добре, коли дані мають логічний сенс!

Ви можете створювати цікавіші візуалізації стовпчастих діаграм, накладаючи дані. Давайте накладемо мінімальну та максимальну довжину на певну категорію птахів:

ggplot(data=birds_grouped, aes(x=Category)) +
  geom_bar(aes(y=MaxLength), stat="identity", position ="identity",  fill='blue') +
  geom_bar(aes(y=MinLength), stat="identity", position="identity", fill='orange')+
  coord_flip()

super-imposed values

🚀 Виклик

Цей набір даних про птахів пропонує багатство інформації про різні види птахів у певній екосистемі. Пошукайте в інтернеті інші набори даних, орієнтовані на птахів. Практикуйте створення графіків і діаграм навколо цих птахів, щоб дізнатися факти, про які ви не здогадувалися.

Тест після лекції

Огляд і самостійне навчання

Цей перший урок дав вам деяку інформацію про те, як використовувати ggplot2 для візуалізації кількісних даних. Проведіть дослідження інших способів роботи з наборами даних для візуалізації. Досліджуйте та шукайте набори даних, які ви могли б візуалізувати за допомогою інших пакетів, таких як Lattice та Plotly.

Завдання

Лінії, точки та стовпці


Відмова від відповідальності:
Цей документ було перекладено за допомогою сервісу автоматичного перекладу Co-op Translator. Хоча ми прагнемо до точності, звертаємо вашу увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ мовою оригіналу слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний переклад людиною. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу.