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/lt/3-Data-Visualization/R/09-visualization-quantities
leestott c74c289c4f
🌐 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

Vizualizacija kiekių

 Sketchnote by (@sketchthedocs)
Vizualizacija kiekių - Sketchnote by @nitya

Šioje pamokoje sužinosite, kaip naudoti kai kurias iš daugelio R bibliotekų, kad sukurtumėte įdomias vizualizacijas, susijusias su kiekių koncepcija. Naudodami išvalytą duomenų rinkinį apie Minesotos paukščius, galite sužinoti daug įdomių faktų apie vietinę laukinę gamtą.

Prieš paskaitą - testas

Stebėkite sparnų plotį su ggplot2

Puiki biblioteka, skirta kurti tiek paprastus, tiek sudėtingus įvairių tipų grafikus ir diagramas, yra ggplot2. Apskritai, duomenų vaizdavimo procesas naudojant šias bibliotekas apima duomenų rėmelio dalių, kurias norite analizuoti, identifikavimą, reikalingų transformacijų atlikimą, x ir y ašių reikšmių priskyrimą, diagramos tipo pasirinkimą ir jos atvaizdavimą.

ggplot2 yra sistema, skirta grafikams kurti deklaratyviai, remiantis „Grafikų gramatika“ (The Grammar of Graphics). Grafikų gramatika yra bendras duomenų vizualizacijos principas, kuris skirsto grafikus į semantinius komponentus, tokius kaip skalės ir sluoksniai. Kitaip tariant, galimybė lengvai kurti vieno ar kelių kintamųjų grafikus su nedaug kodo daro ggplot2 populiariausia vizualizacijų kūrimo biblioteka R kalboje. Vartotojas nurodo ggplot2, kaip susieti kintamuosius su estetikos elementais, kokius grafinius elementus naudoti, o ggplot2 pasirūpina likusia dalimi.

Grafikas = Duomenys + Estetika + Geometrija

  • Duomenys reiškia duomenų rinkinį
  • Estetika nurodo kintamuosius, kuriuos reikia analizuoti (x ir y kintamuosius)
  • Geometrija nurodo diagramos tipą (linijinė diagrama, stulpelinė diagrama ir pan.)

Pasirinkite tinkamiausią geometriją (diagramos tipą) pagal savo duomenis ir istoriją, kurią norite papasakoti per diagramą.

  • Norint analizuoti tendencijas: linijinė, stulpelinė
  • Norint palyginti reikšmes: stulpelinė, juostinė, skritulinė, sklaidos diagrama
  • Norint parodyti, kaip dalys susijusios su visuma: skritulinė
  • Norint parodyti duomenų pasiskirstymą: sklaidos diagrama, juostinė
  • Norint parodyti ryšius tarp reikšmių: linijinė, sklaidos diagrama, burbulinė

Taip pat galite peržiūrėti šį aprašomąjį špargalkę apie ggplot2.

Sukurkite linijinę diagramą apie paukščių sparnų plotį

Atidarykite R konsolę ir importuokite duomenų rinkinį.

Pastaba: Duomenų rinkinys yra saugomas šio saugyklos šaknyje /data aplanke.

Importuokime duomenų rinkinį ir peržiūrėkime jo pradžią (pirmas 5 eilutes).

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

Duomenų pradžioje yra tekstų ir skaičių mišinys:

Pavadinimas MokslinisPavadinimas Kategorija Būrys Šeima Gentis ApsaugosStatusas MinIlgis MaxIlgis MinKūnoMasa MaxKūnoMasa MinSparnųPlotis MaxSparnųPlotis
0 Juodapilvis švilpikas Dendrocygna autumnalis Antys/Žąsys/Vandens Anseriformes Anatidae Dendrocygna LC 47 56 652 1020 76 94
1 Rudasis švilpikas Dendrocygna bicolor Antys/Žąsys/Vandens Anseriformes Anatidae Dendrocygna LC 45 53 712 1050 85 93
2 Snieginė žąsis Anser caerulescens Antys/Žąsys/Vandens Anseriformes Anatidae Anser LC 64 79 2050 4050 135 165
3 Rosso žąsis Anser rossii Antys/Žąsys/Vandens Anseriformes Anatidae Anser LC 57.3 64 1066 1567 113 116
4 Didžioji baltakaktė žąsis Anser albifrons Antys/Žąsys/Vandens Anseriformes Anatidae Anser LC 64 81 1930 3310 130 165

Pradėkime nuo kai kurių skaitinių duomenų vaizdavimo naudojant paprastą linijinę diagramą. Tarkime, norite pamatyti šių įdomių paukščių maksimalų sparnų plotį.

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

Čia įdiegiame ggplot2 paketą ir importuojame jį į darbo aplinką naudodami komandą library("ggplot2"). Norint sukurti bet kokią diagramą su ggplot, naudojama funkcija ggplot(), kurioje nurodote duomenų rinkinį, x ir y kintamuosius kaip atributus. Šiuo atveju naudojame funkciją geom_line(), nes norime sukurti linijinę diagramą.

MaxWingspan-lineplot

Ką pastebite iš karto? Atrodo, kad yra bent vienas išskirtinis atvejis tai tikrai įspūdingas sparnų plotis! Sparnų plotis, viršijantis 2000 cm, yra daugiau nei 20 metrų ar Minesotoje skraido pterodaktiliai? Išsiaiškinkime.

Nors galėtumėte greitai surūšiuoti duomenis „Excel“, kad rastumėte tuos išskirtinius atvejus, kurie greičiausiai yra klaidos, tęskite vizualizacijos procesą dirbdami su diagrama.

Pridėkite etiketes prie x ašies, kad parodytumėte, kokie paukščiai yra nagrinėjami:

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

Mes nurodome kampą theme ir nurodome x ir y ašių etiketes naudodami xlab() ir ylab() atitinkamai. ggtitle() suteikia grafikui/diagramai pavadinimą.

MaxWingspan-lineplot-improved

Net ir pasukus etiketes 45 laipsnių kampu, jų per daug, kad būtų galima perskaityti. Pabandykime kitą strategiją: pažymėkime tik tuos išskirtinius atvejus ir nustatykime etiketes pačioje diagramoje. Galite naudoti sklaidos diagramą, kad būtų daugiau vietos etiketėms:

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") + 

Kas čia vyksta? Naudojote funkciją geom_point(), kad pavaizduotumėte sklaidos taškus. Su tuo pridėjote etiketes paukščiams, kurių MaxWingspan > 500, ir taip pat paslėpėte etiketes x ašyje, kad sumažintumėte diagramos apkrovą.

Ką pastebite?

MaxWingspan-scatterplot

Filtruokite savo duomenis

Tiek Baltasis erelis, tiek Prerijų sakalas, nors tikriausiai labai dideli paukščiai, atrodo, yra neteisingai pažymėti, pridėjus papildomą nulį prie jų maksimalaus sparnų pločio. Mažai tikėtina, kad sutiksite Baltąjį erelį su 25 metrų sparnų pločiu, bet jei taip, praneškite mums! Sukurkime naują duomenų rėmelį be šių dviejų išskirtinių atvejų:

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())

Sukūrėme naują duomenų rėmelį birds_filtered ir tada pavaizdavome sklaidos diagramą. Filtruodami išskirtinius atvejus, jūsų duomenys tampa nuoseklesni ir suprantamesni.

MaxWingspan-scatterplot-improved

Dabar, kai turime švaresnį duomenų rinkinį bent jau sparnų pločio atžvilgiu, sužinokime daugiau apie šiuos paukščius.

Nors linijinės ir sklaidos diagramos gali parodyti informaciją apie duomenų reikšmes ir jų pasiskirstymą, norime pagalvoti apie šio duomenų rinkinio reikšmes. Galėtumėte sukurti vizualizacijas, kad atsakytumėte į šiuos klausimus apie kiekius:

Kiek yra paukščių kategorijų ir kokie jų skaičiai?
Kiek paukščių yra išnykę, nykstantys, reti ar dažni?
Kiek yra įvairių genčių ir būrių pagal Linėjaus terminologiją?

Tyrinėkite stulpelines diagramas

Stulpelinės diagramos yra praktiškos, kai reikia parodyti duomenų grupes. Pažvelkime į paukščių kategorijas, kurios egzistuoja šiame duomenų rinkinyje, kad pamatytume, kuri yra dažniausia pagal skaičių.
Sukurkime stulpelinę diagramą su filtruotais duomenimis.

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

Šiame fragmente įdiegiame dplyr ir lubridate paketus, kad padėtume manipuliuoti ir grupuoti duomenis, norint pavaizduoti sukrautą stulpelinę diagramą. Pirmiausia grupuojate duomenis pagal paukščių Category ir tada apibendrinate MinLength, MaxLength, MinBodyMass, MaxBodyMass, MinWingspan, MaxWingspan stulpelius. Tada, naudodami ggplot2 paketą, pavaizduojate stulpelinę diagramą, nurodydami spalvas skirtingoms kategorijoms ir etiketes.

Stacked bar chart

Ši stulpelinė diagrama, tačiau, yra neįskaitoma, nes yra per daug negrupuotų duomenų. Turite pasirinkti tik tuos duomenis, kuriuos norite pavaizduoti, todėl pažvelkime į paukščių ilgį pagal jų kategoriją.

Filtruokite savo duomenis, kad įtrauktumėte tik paukščių kategoriją.

Kadangi yra daug kategorijų, galite parodyti šią diagramą vertikaliai ir pakoreguoti jos aukštį, kad atitiktų visus duomenis:

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()

Pirmiausia suskaičiuojate unikalių reikšmių skaičių Category stulpelyje ir tada surūšiuojate jas į naują duomenų rėmelį birds_count. Šie surūšiuoti duomenys tada faktorizuojami tame pačiame lygyje, kad būtų pavaizduoti surūšiuota tvarka. Naudodami ggplot2 tada pavaizduojate duomenis stulpelinėje diagramoje. Funkcija coord_flip() pavaizduoja horizontalius stulpelius.

category-length

Ši stulpelinė diagrama suteikia gerą vaizdą apie paukščių skaičių kiekvienoje kategorijoje. Vienu žvilgsniu matote, kad didžiausias paukščių skaičius šiame regione priklauso Antys/Žąsys/Vandens kategorijai. Minesota yra „10 000 ežerų kraštas“, todėl tai nestebina!

Išbandykite kitus šio duomenų rinkinio skaičiavimus. Ar kas nors jus nustebina?

Duomenų palyginimas

Galite išbandyti skirtingus grupuotų duomenų palyginimus, sukurdami naujas ašis. Pabandykite palyginti paukščių MaxLength pagal jų kategoriją:

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()

Mes grupuojame birds_filtered duomenis pagal Category ir tada pavaizduojame stulpelinę diagramą.

comparing data

Čia nieko nestebina: kolibriai turi mažiausią MaxLength, palyginti su pelikanais ar žąsimis. Gerai, kai duomenys logiškai atitinka!

Galite sukurti įdomesnes stulpelinių diagramų vizualizacijas, uždedant duomenis vienas ant kito. Uždenkime minimalų ir maksimalų ilgį tam tikroje paukščių kategorijoje:

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

🚀 Iššūkis

Šis paukščių duomenų rinkinys siūlo daugybę informacijos apie skirtingų tipų paukščius tam tikroje ekosistemoje. Paieškokite internete ir pažiūrėkite, ar galite rasti kitų su paukščiais susijusių duomenų rinkinių. Praktikuokitės kurti diagramas ir grafikus apie šiuos paukščius, kad atrastumėte faktų, kurių nežinojote.

Po paskaitos - testas

Apžvalga ir savarankiškas mokymasis

Ši pirmoji pamoka suteikė jums informacijos apie tai, kaip naudoti ggplot2 kiekių vizualizavimui. Atlikite tyrimus apie kitus būdus dirbti su duomenų rinkiniais vizualizacijai. Ieškokite ir tyrinėkite duomenų rinkinius, kuriuos galėtumėte vizualizuoti naudodami kitas bibliotekas, tokias kaip Lattice ir Plotly.

Užduotis

Linijos, sklaidos ir stulpeliai


Atsakomybės apribojimas:
Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą Co-op Translator. Nors siekiame tikslumo, atkreipkite dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojama naudoti profesionalų žmogaus vertimą. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus aiškinimus, kylančius dėl šio vertimo naudojimo.