15 KiB
Määrien visualisointi
![]() |
---|
Määrien visualisointi - Sketchnote by @nitya |
Tässä oppitunnissa tutustut siihen, miten voit käyttää joitakin R:n saatavilla olevia kirjastoja luodaksesi kiinnostavia visualisointeja, jotka liittyvät määrien käsitteeseen. Käyttämällä puhdistettua datasettiä Minnesotan linnuista voit oppia monia mielenkiintoisia asioita paikallisesta eläimistöstä.
Esiluennon kysely
Tarkastele siipiväliä ggplot2:n avulla
Erinomainen kirjasto erilaisten yksinkertaisten ja monimutkaisten kaavioiden ja diagrammien luomiseen on ggplot2. Yleisesti ottaen datan visualisointi näiden kirjastojen avulla sisältää seuraavat vaiheet: määritä, mitä osia dataframesta haluat käyttää, tee tarvittavat muunnokset datalle, määritä x- ja y-akselin arvot, päätä kaaviotyyppi ja näytä kaavio.
ggplot2
on järjestelmä, joka luo grafiikkaa deklaratiivisesti perustuen "The Grammar of Graphics" -menetelmään. Grammar of Graphics on yleinen kaavioiden visualisointimenetelmä, joka jakaa kaaviot semanttisiin osiin, kuten skaaloihin ja kerroksiin. Toisin sanoen, ggplot2
tekee yksinkertaisten ja monimutkaisten kaavioiden luomisesta univariantille tai multivariantille datalle helppoa vähäisellä koodilla, mikä tekee siitä suosituimman visualisointikirjaston R:ssä. Käyttäjä määrittää, miten muuttujat kartoitetaan visuaalisiin ominaisuuksiin, mitä graafisia elementtejä käytetään, ja ggplot2
hoitaa loput.
✅ Kaavio = Data + Esteettisyys + Geometria
- Data viittaa datasettiin
- Esteettisyys tarkoittaa tutkittavia muuttujia (x- ja y-muuttujat)
- Geometria viittaa kaaviotyyppiin (viivakaavio, pylväsdiagrammi jne.)
Valitse paras geometria (kaaviotyyppi) datasi ja tarinan mukaan, jonka haluat kertoa kaavion avulla.
- Trendien analysointi: viiva, pylväs
- Arvojen vertailu: pylväs, palkki, piirakka, hajontakaavio
- Osien suhde kokonaisuuteen: piirakka
- Datan jakauman näyttäminen: hajontakaavio, palkki
- Arvojen välisten suhteiden näyttäminen: viiva, hajontakaavio, kupla
✅ Voit myös tutustua tähän kuvaavaan cheatsheetiin ggplot2:lle.
Luo viivakaavio lintujen siipiväliarvoista
Avaa R-konsoli ja tuo datasetti.
Huom: Datasetti on tallennettu tämän repositorion juureen
/data
-kansioon.
Tuodaan datasetti ja tarkastellaan datan alkua (ensimmäiset 5 riviä).
birds <- read.csv("../../data/birds.csv",fileEncoding="UTF-8-BOM")
head(birds)
Datan alku sisältää sekoituksen tekstiä ja numeroita:
Nimi | Tieteellinen nimi | Kategoria | Lahko | Heimo | Suku | Suojelustatus | MinPituus | MaxPituus | MinPaino | MaxPaino | MinSiipiväli | MaxSiipiväli | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Mustavatsainen viheltävä ankka | Dendrocygna autumnalis | Ankat/hanhet/vesilinnut | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 |
1 | Ruostoviheltävä ankka | Dendrocygna bicolor | Ankat/hanhet/vesilinnut | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 |
2 | Lumihanhi | Anser caerulescens | Ankat/hanhet/vesilinnut | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 |
3 | Rossin hanhi | Anser rossii | Ankat/hanhet/vesilinnut | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 |
4 | Iso valkoposkihanhi | Anser albifrons | Ankat/hanhet/vesilinnut | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 |
Aloitetaan piirtämällä osa numeerisesta datasta perusviivakaavion avulla. Oletetaan, että haluat tarkastella näiden mielenkiintoisten lintujen maksimaalista siipiväliä.
install.packages("ggplot2")
library("ggplot2")
ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) +
geom_line()
Tässä asennetaan ggplot2
-kirjasto ja tuodaan se työtilaan komennolla library("ggplot2")
. Kaavion piirtämiseen ggplotissa käytetään ggplot()
-funktiota, jossa määritetään datasetti, x- ja y-muuttujat attribuuteiksi. Tässä tapauksessa käytetään geom_line()
-funktiota, koska tavoitteena on piirtää viivakaavio.
Mitä huomaat heti? Näyttää olevan ainakin yksi poikkeama - melko vaikuttava siipiväli! Yli 2000 senttimetrin siipiväli vastaa yli 20 metriä - onko Minnesotassa lentäviä pterosauruksia? Tutkitaan asiaa.
Vaikka voisit tehdä nopean lajittelun Excelissä löytääksesi nämä poikkeamat, jotka ovat todennäköisesti kirjoitusvirheitä, jatka visualisointiprosessia työskentelemällä suoraan kaaviosta.
Lisää x-akselille selitteet, jotka näyttävät, minkä tyyppisistä linnuista on kyse:
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")
Määritämme kulman theme
-osiossa ja määritämme x- ja y-akselin selitteet xlab()
- ja ylab()
-funktioilla. ggtitle()
antaa kaaviolle nimen.
Vaikka selitteiden kiertokulma on asetettu 45 asteeseen, niitä on silti liikaa luettavaksi. Kokeillaan toista strategiaa: merkitään vain poikkeamat ja asetetaan selitteet kaavion sisälle. Voit käyttää hajontakaaviota, jotta selitteille jää enemmän tilaa:
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") +
Mitä tässä tapahtuu? Käytit geom_point()
-funktiota hajontapisteiden piirtämiseen. Tämän avulla lisäsit selitteet linnuille, joiden MaxWingspan > 500
, ja piilotit x-akselin selitteet kaavion selkeyttämiseksi.
Mitä huomaat?
Suodata dataasi
Sekä valkopäämerikotka että preeriakotka, vaikka ovatkin todennäköisesti suuria lintuja, näyttävät olevan virheellisesti merkittyjä, ja niiden maksimaaliseen siipiväliin on lisätty ylimääräinen nolla. On epätodennäköistä, että kohtaat valkopäämerikotkan, jonka siipiväli on 25 metriä, mutta jos näin käy, kerro meille! Luodaan uusi dataframe ilman näitä kahta poikkeamaa:
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())
Loimme uuden dataframen birds_filtered
ja piirsimme hajontakaavion. Suodattamalla poikkeamat datasi on nyt yhtenäisempää ja ymmärrettävämpää.
Nyt kun meillä on puhtaampi datasetti ainakin siipivälin osalta, tutkitaan lisää näitä lintuja.
Vaikka viiva- ja hajontakaaviot voivat näyttää tietoa datan arvoista ja niiden jakaumista, haluamme pohtia datasetin sisältämiä arvoja. Voisit luoda visualisointeja vastataksesi seuraaviin kysymyksiin määristä:
Kuinka monta lintukategoriaa on olemassa, ja mikä on niiden lukumäärä?
Kuinka monta lintua on sukupuuttoon kuolleita, uhanalaisia, harvinaisia tai yleisiä?
Kuinka monta eri sukua ja lahkoa on Linnaeuksen terminologian mukaan?
Tutki pylväsdiagrammeja
Pylväsdiagrammit ovat käytännöllisiä, kun haluat näyttää datan ryhmittelyjä. Tutkitaan datasetin lintukategorioita ja katsotaan, mikä on yleisin lukumäärän perusteella.
Luodaan pylväsdiagrammi suodatetusta datasta.
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")
Seuraavassa koodissa asennetaan dplyr- ja lubridate-kirjastot, jotka auttavat datan käsittelyssä ja ryhmittelyssä pinotun pylväsdiagrammin piirtämiseksi. Ensin ryhmitellään data lintujen Category
-sarakkeen mukaan ja tiivistetään sarakkeet MinLength
, MaxLength
, MinBodyMass
, MaxBodyMass
, MinWingspan
, MaxWingspan
. Sitten piirretään pylväsdiagrammi ggplot2
-kirjaston avulla ja määritetään eri kategorioiden värit ja selitteet.
Tämä pylväsdiagrammi on kuitenkin vaikeasti luettavissa, koska siinä on liikaa ryhmittelemätöntä dataa. Sinun täytyy valita vain data, jonka haluat piirtää, joten tarkastellaan lintujen pituutta kategorian perusteella.
Suodata dataasi sisältämään vain lintujen kategoriat.
Koska kategorioita on paljon, voit näyttää tämän kaavion pystysuunnassa ja säätää sen korkeutta, jotta kaikki data mahtuu mukaan:
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()
Ensin lasketaan Category
-sarakkeen uniikit arvot ja lajitellaan ne uuteen dataframeen birds_count
. Tämä lajiteltu data järjestetään samalle tasolle, jotta se piirretään järjestyksessä. Käyttämällä ggplot2
-kirjastoa piirretään data pylväsdiagrammiin. coord_flip()
piirtää vaakapalkit.
Tämä pylväsdiagrammi näyttää hyvän näkymän lintujen lukumäärästä kussakin kategoriassa. Silmänräpäyksessä näet, että suurin osa tämän alueen linnuista kuuluu Ankat/hanhet/vesilinnut-kategoriaan. Minnesota on "10 000 järven maa", joten tämä ei ole yllättävää!
✅ Kokeile joitakin muita laskentoja tästä datasetistä. Yllättääkö jokin sinut?
Datan vertailu
Voit kokeilla eri ryhmitellyn datan vertailuja luomalla uusia akseleita. Kokeile vertailua lintujen maksimaalisen pituuden perusteella kategorian mukaan:
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()
Ryhmämme birds_filtered
-datan Category
-sarakkeen mukaan ja piirrämme pylväsdiagrammin.
Tässä ei ole mitään yllättävää: kolibrit ovat pienimpiä maksimaalisen pituuden osalta verrattuna pelikaaniin tai hanhiin. On hyvä, kun data on loogista!
Voit luoda mielenkiintoisempia pylväsdiagrammeja päällekkäistämällä dataa. Päällekkäistetään minimipituus ja maksimipituus tiettyyn lintukategoriaan:
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()
🚀 Haaste
Tämä lintudatasetti tarjoaa runsaasti tietoa eri lintutyypeistä tietyssä ekosysteemissä. Etsi internetistä muita lintuihin liittyviä datasettiä. Harjoittele kaavioiden ja diagrammien luomista näistä linnuista löytääksesi faktoja, joita et tiennyt.
Luennon jälkeinen kysely
Kertaus ja itseopiskelu
Tämä ensimmäinen oppitunti on antanut sinulle tietoa siitä, miten käyttää ggplot2
:ta määrien visualisointiin. Tutki muita tapoja työskennellä datasetin kanssa visualisointia varten. Etsi ja tutki datasettiä, joita voisit visualisoida muilla kirjastoilla, kuten Lattice ja Plotly.
Tehtävä
Vastuuvapauslauseke:
Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua Co-op Translator. Vaikka pyrimme tarkkuuteen, huomioithan, että automaattiset käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäisellä kielellä tulisi pitää ensisijaisena lähteenä. Kriittisen tiedon osalta suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa väärinkäsityksistä tai virhetulkinnoista, jotka johtuvat tämän käännöksen käytöstä.