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/bg/3-Data-Visualization/R/09-visualization-quantities
leestott b83ba9ded4
🌐 Update translations via Co-op Translator
4 weeks ago
..
README.md 🌐 Update translations via Co-op Translator 4 weeks ago
assignment.md 🌐 Update translations via Co-op Translator 4 weeks ago

README.md

Визуализиране на количества

 Скетч от (@sketchthedocs)
Визуализиране на количества - Скетч от @nitya

В този урок ще разгледате как да използвате някои от многото налични библиотеки на R, за да създавате интересни визуализации, свързани с концепцията за количество. Използвайки почистен набор от данни за птиците в Минесота, можете да научите много интересни факти за местната дива природа.

Тест преди лекцията

Наблюдавайте размах на крилата с ggplot2

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

ggplot2 е система за декларативно създаване на графики, базирана на Граматиката на графиките. Граматиката на графиките е обща схема за визуализация на данни, която разделя графиките на семантични компоненти като скали и слоеве. С други думи, лекотата на създаване на графики за едномерни или многомерни данни с малко код прави ggplot2 най-популярния пакет за визуализации в R. Потребителят указва на ggplot2 как да свърже променливите с естетиката, какви графични примитиви да използва, а ggplot2 се грижи за останалото.

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

  • Данни се отнася до набора от данни
  • Естетика указва променливите за изследване (x и y променливи)
  • Геометрия се отнася до типа графика (линейна графика, стълбовидна диаграма и т.н.)

Изберете най-подходящата геометрия (тип графика) според вашите данни и историята, която искате да разкажете чрез графиката.

  • За анализ на тенденции: линейна, колонна
  • За сравнение на стойности: стълбовидна, колонна, кръгова, точкова диаграма
  • За показване на части от цялото: кръгова
  • За показване на разпределение на данни: точкова, стълбовидна
  • За показване на връзки между стойности: линейна, точкова, балонна

Можете също да разгледате този описателен cheatsheet за 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

Тук няма нищо изненадващо: колибритата имат най-малка максимална дължина в сравнение с пеликаните или гъските. Добре е, когато данните имат логически смисъл!

Можете да създадете по-интересни визуализации на стълбовидни диаграми, като наслагвате данни. Нека наслагаме минималната и максималната дължина върху дадена категория птици:

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.

Задача

Линии, точки и стълбове


Отказ от отговорност:
Този документ е преведен с помощта на AI услуга за превод Co-op Translator. Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за недоразумения или погрешни интерпретации, произтичащи от използването на този превод.