|
4 weeks ago | |
---|---|---|
.. | ||
README.md | 4 weeks ago | |
assignment.md | 4 weeks ago |
README.md
Vizualizarea Cantităților
![]() |
---|
Vizualizarea Cantităților - Sketchnote de @nitya |
În această lecție vei explora cum să folosești unele dintre numeroasele biblioteci disponibile în pachetele R pentru a învăța să creezi vizualizări interesante în jurul conceptului de cantitate. Folosind un set de date curățat despre păsările din Minnesota, poți descoperi multe informații interesante despre fauna locală.
Chestionar înainte de lecție
Observă anvergura aripilor cu ggplot2
O bibliotecă excelentă pentru crearea atât a graficelor simple, cât și a celor sofisticate este ggplot2. În termeni generali, procesul de realizare a graficelor folosind aceste biblioteci include identificarea părților din cadrul de date pe care vrei să le analizezi, efectuarea transformărilor necesare asupra datelor, atribuirea valorilor pentru axele x și y, alegerea tipului de grafic și apoi afișarea graficului.
ggplot2
este un sistem pentru crearea graficelor în mod declarativ, bazat pe Gramatica Graficelor. Gramatica Graficelor este o schemă generală pentru vizualizarea datelor care împarte graficele în componente semantice, cum ar fi scalele și straturile. Cu alte cuvinte, ușurința de a crea grafice pentru date univariate sau multivariate cu puțin cod face ca ggplot2
să fie cel mai popular pachet utilizat pentru vizualizări în R. Utilizatorul spune ggplot2
cum să mapese variabilele la estetici, ce primitive grafice să folosească, iar ggplot2
se ocupă de restul.
✅ Grafic = Date + Estetici + Geometrie
- Datele se referă la setul de date
- Esteticile indică variabilele care urmează să fie studiate (variabilele x și y)
- Geometria se referă la tipul de grafic (grafic liniar, grafic cu bare etc.)
Alege cea mai bună geometrie (tip de grafic) în funcție de datele tale și povestea pe care vrei să o spui prin grafic.
- Pentru a analiza tendințele: linie, coloană
- Pentru a compara valori: bare, coloană, plăcintă, scatterplot
- Pentru a arăta cum părțile se raportează la întreg: plăcintă
- Pentru a arăta distribuția datelor: scatterplot, bare
- Pentru a arăta relațiile dintre valori: linie, scatterplot, bubble
✅ Poți consulta și acest cheatsheet descriptiv pentru ggplot2.
Construiește un grafic liniar despre valorile anvergurii aripilor păsărilor
Deschide consola R și importă setul de date.
Notă: Setul de date este stocat în rădăcina acestui repo în folderul
/data
.
Să importăm setul de date și să observăm primele 5 rânduri ale datelor.
birds <- read.csv("../../data/birds.csv",fileEncoding="UTF-8-BOM")
head(birds)
Primele rânduri ale datelor conțin un amestec de text și numere:
Nume | NumeȘtiințific | Categorie | Ordin | Familie | Genus | StatusConservare | LungimeMin | LungimeMax | MasăCorpMin | MasăCorpMax | AnvergurăMin | AnvergurăMax | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Rața fluierătoare cu burtă neagră | Dendrocygna autumnalis | Rațe/Gâște/Păsări acvatice | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 |
1 | Rața fluierătoare fulvoasă | Dendrocygna bicolor | Rațe/Gâște/Păsări acvatice | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 |
2 | Gâsca de zăpadă | Anser caerulescens | Rațe/Gâște/Păsări acvatice | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 |
3 | Gâsca lui Ross | Anser rossii | Rațe/Gâște/Păsări acvatice | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 |
4 | Gâsca albă cu frunte mare | Anser albifrons | Rațe/Gâște/Păsări acvatice | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 |
Să începem prin a reprezenta grafic unele dintre datele numerice folosind un grafic liniar de bază. Să presupunem că vrei să vezi anvergura maximă a aripilor acestor păsări interesante.
install.packages("ggplot2")
library("ggplot2")
ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) +
geom_line()
Aici, instalezi pachetul ggplot2
și apoi îl importi în spațiul de lucru folosind comanda library("ggplot2")
. Pentru a crea orice grafic în ggplot, se folosește funcția ggplot()
și specifici setul de date, variabilele x și y ca atribute. În acest caz, folosim funcția geom_line()
deoarece dorim să creăm un grafic liniar.
Ce observi imediat? Pare să existe cel puțin un outlier - ce anvergură impresionantă! O anvergură de peste 2000 de centimetri înseamnă mai mult de 20 de metri - sunt Pterodactili care zboară prin Minnesota? Să investigăm.
Deși ai putea face o sortare rapidă în Excel pentru a găsi acești outlieri, care sunt probabil erori de tipar, continuă procesul de vizualizare lucrând direct din grafic.
Adaugă etichete pe axa x pentru a arăta ce tip de păsări sunt în discuție:
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")
Specificăm unghiul în theme
și specificăm etichetele axelor x și y în xlab()
și ylab()
respectiv. Funcția ggtitle()
oferă un nume graficului.
Chiar și cu rotația etichetelor setată la 45 de grade, sunt prea multe pentru a fi citite. Să încercăm o strategie diferită: etichetează doar outlierii și setează etichetele în interiorul graficului. Poți folosi un grafic scatter pentru a face mai mult loc etichetării:
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") +
Ce se întâmplă aici? Ai folosit funcția geom_point()
pentru a reprezenta puncte scatter. Cu aceasta, ai adăugat etichete pentru păsările care au MaxWingspan > 500
și ai ascuns etichetele de pe axa x pentru a decluttera graficul.
Ce descoperi?
Filtrează datele tale
Atât Vulturul Pleșuv, cât și Șoimul de Prerie, deși probabil păsări foarte mari, par să fie etichetate greșit, cu un zero în plus adăugat la anvergura maximă a aripilor. Este puțin probabil să întâlnești un Vultur Pleșuv cu o anvergură de 25 de metri, dar dacă da, te rugăm să ne anunți! Să creăm un nou cadru de date fără acești doi outlieri:
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())
Am creat un nou cadru de date birds_filtered
și apoi am reprezentat un grafic scatter. Prin filtrarea outlierilor, datele tale sunt acum mai coerente și mai ușor de înțeles.
Acum că avem un set de date mai curat, cel puțin în ceea ce privește anvergura aripilor, să descoperim mai multe despre aceste păsări.
Deși graficele liniare și scatter pot afișa informații despre valorile datelor și distribuțiile lor, vrem să ne gândim la valorile inerente acestui set de date. Ai putea crea vizualizări pentru a răspunde la următoarele întrebări despre cantitate:
Câte categorii de păsări există și care sunt numerele lor?
Câte păsări sunt dispărute, pe cale de dispariție, rare sau comune?
Câte sunt din diferitele genuri și ordine în terminologia lui Linnaeus?
Explorează graficele cu bare
Graficele cu bare sunt practice atunci când trebuie să arăți grupări de date. Să explorăm categoriile de păsări care există în acest set de date pentru a vedea care este cea mai comună ca număr.
Să creăm un grafic cu bare pe datele filtrate.
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")
În următorul fragment, instalăm pachetele dplyr și lubridate pentru a ajuta la manipularea și gruparea datelor în vederea creării unui grafic cu bare stivuite. Mai întâi, grupăm datele după Category
și apoi sumarizăm coloanele MinLength
, MaxLength
, MinBodyMass
, MaxBodyMass
, MinWingspan
, MaxWingspan
. Apoi, reprezentăm graficul cu bare folosind pachetul ggplot2
și specificăm culorile pentru diferitele categorii și etichetele.
Acest grafic cu bare, totuși, este greu de citit deoarece există prea multe date negrupate. Trebuie să selectezi doar datele pe care vrei să le reprezinți grafic, așa că să analizăm lungimea păsărilor în funcție de categoria lor.
Filtrează datele pentru a include doar categoria păsărilor.
Deoarece există multe categorii, poți afișa acest grafic vertical și ajusta înălțimea pentru a include toate datele:
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()
Mai întâi numeri valorile unice din coloana Category
și apoi le sortezi într-un nou cadru de date birds_count
. Aceste date sortate sunt apoi factorizate la același nivel pentru a fi reprezentate grafic în mod ordonat. Folosind ggplot2
, reprezinți grafic datele într-un grafic cu bare. Funcția coord_flip()
afișează barele orizontal.
Acest grafic cu bare oferă o vedere bună asupra numărului de păsări din fiecare categorie. Dintr-o privire, vezi că cel mai mare număr de păsări din această regiune sunt în categoria Rațe/Gâște/Păsări acvatice. Minnesota este 'țara celor 10.000 de lacuri', așa că acest lucru nu este surprinzător!
✅ Încearcă alte numărători pe acest set de date. Te surprinde ceva?
Compararea datelor
Poți încerca diferite comparații ale datelor grupate prin crearea de noi axe. Încearcă o comparație a LungimiiMaxime a unei păsări, bazată pe categoria sa:
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()
Grupăm datele birds_filtered
după Category
și apoi reprezentăm grafic un grafic cu bare.
Nimic nu este surprinzător aici: colibrii au cea mai mică LungimeMaximă comparativ cu Pelicanii sau Gâștele. Este bine când datele au sens logic!
Poți crea vizualizări mai interesante ale graficelor cu bare prin suprapunerea datelor. Să suprapunem LungimeaMinimă și LungimeaMaximă pe o categorie de păsări dată:
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()
🚀 Provocare
Acest set de date despre păsări oferă o bogăție de informații despre diferite tipuri de păsări dintr-un anumit ecosistem. Caută pe internet și vezi dacă poți găsi alte seturi de date orientate spre păsări. Exersează construirea de grafice și diagrame despre aceste păsări pentru a descoperi fapte pe care nu le știai.
Chestionar după lecție
Recapitulare & Studiu Individual
Această primă lecție ți-a oferit câteva informații despre cum să folosești ggplot2
pentru a vizualiza cantități. Fă cercetări despre alte moduri de a lucra cu seturi de date pentru vizualizare. Cercetează și caută seturi de date pe care le-ai putea vizualiza folosind alte pachete precum Lattice și Plotly.
Temă
Grafice liniare, scatter și bare
Declinare de responsabilitate:
Acest document a fost tradus folosind serviciul de traducere AI Co-op Translator. Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de oameni. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri.