Scatter Plot R:ssä käyttämällä ggplot2:ta (esimerkin kanssa)
Kaaviot ovat data-analyysin kolmas osa. Ensimmäinen osa on noin tietojen poiminta, toinen osa käsittelee tietojen puhdistaminen ja käsittely. Viimeinkin datatieteilijä saattaa tarvita välittää tulokset graafisesti.
Datatieteilijän työtä voi tarkastella seuraavassa kuvassa
- Datatieteilijän ensimmäinen tehtävä on määritellä tutkimuskysymys. Tämä tutkimuskysymys riippuu hankkeen tavoitteista ja päämääristä.
- Sen jälkeen yksi näkyvimmistä tehtävistä on ominaisuussuunnittelu. Datatieteilijän tulee kerätä, käsitellä ja puhdistaa dataa
- Kun tämä vaihe on valmis, hän voi alkaa tutkia tietojoukkoa. Joskus on tarpeen tarkentaa ja muuttaa alkuperäistä hypoteesia uuden löydön vuoksi.
- Kun selittävä analyysi on saavutettu, datatieteilijän on otettava huomioon lukijan kyky ymmärtää taustalla olevat käsitteet ja mallit.
- Hänen tulokset tulee esittää muodossa, jonka kaikki sidosryhmät ymmärtävät. Yksi parhaista tavoista tiedottaa tulokset ovat kautta a kaavio.
- Kaaviot ovat uskomaton työkalu monimutkaisen analyysin yksinkertaistamiseen.
ggplot2-paketti
Tämä opetusohjelman osa keskittyy kuvaajien/kaavioiden tekemiseen R:llä.
Tässä opetusohjelmassa aiot käyttää ggplot2-pakettia. Tämä paketti on rakennettu Wilkinsonin, 2005, Grammar of graphics -kirjan johdonmukaiselle pohjalle. ggplot2 on erittäin joustava, sisältää monia teemoja ja juonimäärityksiä korkealla abstraktiolla. ggplot2:lla et voi piirtää kolmiulotteista grafiikkaa ja luoda interaktiivista grafiikkaa.
Ggplot2:ssa kaavio koostuu seuraavista argumenteista:
- tiedot
- esteettinen kartoitus
- geometrinen esine
- tilastollisia muunnoksia
- asteikot
- koordinaattijärjestelmä
- asennon säädöt
- fasetointi
Opit ohjaamaan näitä argumentteja opetusohjelmassa.
Ggplot2:n perussyntaksi on:
ggplot(data, mapping=aes()) + geometric object arguments: data: Dataset used to plot the graph mapping: Control the x and y-axis geometric object: The type of plot you want to show. The most common object are: - Point: `geom_point()` - Bar: `geom_bar()` - Line: `geom_line()` - Histogram: `geom_histogram()`
Hajontakaavio
Katsotaan kuinka ggplot toimii mtcars-tietojoukon kanssa. Aloitat piirtämällä mpg-muuttujan ja drat-muuttujan hajontakaavion.
Perussironnakaavio
library(ggplot2) ggplot(mtcars, aes(x = drat, y = mpg)) + geom_point()
Koodin selitys
- Välität ensin tietojoukon mtcars ggplotille.
- Aes()-argumentin sisään lisäät x-akselin ja y-akselin.
- +-merkki tarkoittaa, että haluat R:n jatkavan koodin lukemista. Se tekee koodista luettavamman rikkomalla sen.
- Käytä geom_point() geometriselle objektille.
lähtö:
Hajakuvaaja ryhmien kanssa
Joskus voi olla mielenkiintoista erottaa arvot tietoryhmän (eli tekijätason datan) perusteella.
ggplot(mtcars, aes(x = mpg, y = drat)) + geom_point(aes(color = factor(gear)))
Koodin selitys
- Geom_point():n sisällä oleva aes() ohjaa ryhmän väriä. Ryhmän tulee olla tekijämuuttuja. Siten muunnat muuttuvan vaihteen tekijäksi.
- Kaiken kaikkiaan sinulla on koodi aes(väri = factor(gear)), joka muuttaa pisteiden väriä.
lähtö:
Vaihda akselia
Datan skaalaaminen on suuri osa datatieteilijän työtä. Harvinaisissa tapauksissa tiedot tulevat kauniissa kellomuodossa. Yksi ratkaisu tehdä tiedoistasi vähemmän herkkiä poikkeaville arvoille on skaalata ne uudelleen.
ggplot(mtcars, aes(x = log(mpg), y = log(drat))) + geom_point(aes(color = factor(gear)))
Koodin selitys
- Muunnat x- ja y-muuttujat log():ssa suoraan aes()-kuvauksen sisällä.
Huomaa, että mitä tahansa muuta muunnosta, kuten standardointia tai normalisointia, voidaan soveltaa.
lähtö:
Sirontadiagrammi sovitetuilla arvoilla
Voit lisätä kaavioon toisen tason tietoja. Voit piirtää lineaarisen regression sovitetun arvon.
my_graph <- ggplot(mtcars, aes(x = log(mpg), y = log(drat))) + geom_point(aes(color = factor(gear))) + stat_smooth(method = "lm", col = "#C42126", se = FALSE, size = 1) my_graph
Koodin selitys
- graph: Tallennat graafisi muuttujakaavioon. Se on hyödyllinen jatkokäytössä tai liian monimutkaisten koodirivien välttämiseksi
- Argumentti stat_smooth() ohjaa tasoitusmenetelmää
- menetelmä = "lm": Lineaarinen regressio
- col = “#C42126”: Viivan punaisen värin koodi
- se = EPÄTOSI: Älä näytä vakiovirhettä
- koko = 1: viivan koko on 1
lähtö:
Huomaa, että muita tasoitusmenetelmiä on saatavilla
- glm
- GAM
- lössi: oletusarvo
- vanne
Lisää tiedot kaavioon
Toistaiseksi emme ole lisänneet tietoja kaavioihin. Kaavioiden tulee olla informatiivisia. Lukijan tulisi nähdä data-analyysin tarina vain katsomalla kaaviota ilman lisädokumentaatiota. Siksi kaaviot tarvitsevat hyvät etiketit. Voit lisätä tarroja labs()-toiminnolla.
Lab():n perussyntaksi on:
lab(title = "Hello Guru99") argument: - title: Control the title. It is possible to change or add title with: - subtitle: Add subtitle below title - caption: Add caption below the graph - x: rename x-axis - y: rename y-axis Example:lab(title = "Hello Guru99", subtitle = "My first plot")
Lisää otsikko
Yksi pakollinen lisättävä tieto on tietysti otsikko.
my_graph + labs( title = "Plot Mile per hours and drat, in log" )
Koodin selitys
- my_graph: Käytät tallentamaasi kaaviota. Se välttää kaikkien koodien kirjoittamisen uudelleen joka kerta, kun lisäät kaavioon uutta tietoa.
- Käärit otsikon lab() sisään.
- Viivan punaisen värin koodi
- se = EPÄTOSI: Älä näytä vakiovirhettä
- koko = 1: viivan koko on 1
lähtö:
Lisää otsikko dynaamisella nimellä
Dynaaminen otsikko auttaa lisäämään otsikkoon tarkempia tietoja.
Voit käyttää paste()-funktiota staattisen ja dynaamisen tekstin tulostamiseen. Paste():n perussyntaksi on:
paste("This is a text", A) arguments - " ": Text inside the quotation marks are the static text - A: Display the variable stored in A - Note you can add as much static text and variable as you want. You need to separate them with a comma
Esimerkiksi:
A <-2010 paste("The first year is", A)
lähtö:
## [1] "The first year is 2010"
B <-2018 paste("The first year is", A, "and the last year is", B)
lähtö:
## [1] "The first year is 2010 and the last year is 2018"
Voit lisätä kaavioomme dynaamisen nimen, nimittäin mpg:n keskiarvon.
mean_mpg <- mean(mtcars$mpg) my_graph + labs( title = paste("Plot Mile per hours and drat, in log. Average mpg is", mean_mpg) )
Koodin selitys
- Luot mpg:n keskiarvon keskiarvolla(mtcars$mpg), joka on tallennettu mean_mpg-muuttujaan
- Käytät paste() ja mean_mpg luodaksesi dynaamisen otsikon, joka palauttaa mpg:n keskiarvon
lähtö:
Lisää alaotsikko
Kaksi lisätietoa voivat tehdä kaaviostasi selkeämmän. Puhut tekstityksestä. Alaotsikko menee heti otsikon alle. Kuvateksti voi kertoa laskennan suorittaneesta ja tiedon lähteestä.
my_graph + labs( title = "Relation between Mile per hours and drat", subtitle = "Relationship break down by gear class", caption = "Authors own computation" )
Koodin selitys
- Inside the lab() lisäsit:
- title = "Tuntimailin ja dratin välinen suhde": Lisää otsikko
- subtitle = "Suhteen erittely vaihdeluokan mukaan": Lisää alaotsikko
- caption = "Tekijän oma laskenta: Lisää kuvateksti
- Erottelet jokaisen uuden tiedon pilkulla,
- Huomaa, että rikot koodirivit. Se ei ole pakollinen, ja se vain auttaa koodin lukemisessa helpommin
lähtö:
Nimeä uudelleen x-akseli ja y-akseli
Muuttujat itse tietojoukossa eivät välttämättä aina ole eksplisiittisiä tai käytä tavanomaisesti _-merkkiä, kun sanoja on useita (eli GDP_CAP). Et halua sellaisen nimen näkyvän kaaviossasi. On tärkeää muuttaa nimi tai lisätä lisätietoja, kuten yksiköt.
my_graph + labs( x = "Drat definition", y = "Mile per hours", color = "Gear", title = "Relation between Mile per hours and drat", subtitle = "Relationship break down by gear class", caption = "Authors own computation" )
Koodin selitys
- Inside the lab() lisäsit:
- x = "Drat-määrittely": Muuta x-akselin nimeä
- y = "Maili tunnissa": Muuta y-akselin nimeä
lähtö:
Hallitse vaakoja
Voit hallita akselin mittakaavaa.
Funktio seq() on kätevä, kun haluat luoda numerosarjan. Perussyntaksi on:
seq(begin, last, by = x) arguments: - begin: First number of the sequence - last: Last number of the sequence - by= x: The step. For instance, if x is 2, the code adds 2 to `begin-1` until it reaches `last`
Jos esimerkiksi haluat luoda alueen 0-12 askeleella 3, sinulla on neljä numeroa, 0 4 8 12
seq(0, 12,4)
lähtö:
## [1] 0 4 8 12
Voit ohjata x-akselin ja y-akselin mittakaavaa alla
my_graph + scale_x_continuous(breaks = seq(1, 3.6, by = 0.2)) + scale_y_continuous(breaks = seq(1, 1.6, by = 0.1)) + labs( x = "Drat definition", y = "Mile per hours", color = "Gear", title = "Relation between Mile per hours and drat", subtitle = "Relationship break down by gear class", caption = "Authors own computation" )
Koodin selitys
- Funktio scale_y_continuous() ohjaa y-akseli
- Funktio scale_x_continuous() ohjaa x-akseli.
- Parametrikatkot ohjaavat akselin jakoa. Voit lisätä numerosarjan manuaalisesti tai käyttää seq()-funktiota:
- seq(1, 3.6, by = 0.2): Luo kuusi numeroa väliltä 2.4–3.4 askeleella 3
- seq(1, 1.6, by = 0.1): Luo seitsemän numeroa väliltä 1–1.6 askeleella 1
lähtö:
Teema
Lopuksi R antaa meille mahdollisuuden räätälöidä juoni erilaisilla teemoilla. Kirjasto ggplot2 sisältää kahdeksan teemaa:
- teema_bw()
- theme_light()
- theme_classis()
- theme_linedraw()
- theme_dark()
- theme_minimal()
- teema_harmaa()
- theme_void()
my_graph + theme_dark() + labs( x = "Drat definition, in log", y = "Mile per hours, in log", color = "Gear", title = "Relation between Mile per hours and drat", subtitle = "Relationship break down by gear class", caption = "Authors own computation" )
lähtö:
Tallenna tontit
Kaikkien näiden vaiheiden jälkeen on aika tallentaa ja jakaa kaaviosi. Lisäät ggsave('TIEDOSTON NIMI) heti kaavion piirtämisen jälkeen ja se tallennetaan kiintolevylle.
Kaavio tallennetaan työhakemistoon. Voit tarkistaa työhakemiston suorittamalla tämän koodin:
directory <-getwd() directory
Piirretään upea kaaviosi, tallennetaan se ja tarkistetaan sijainti
my_graph + theme_dark() + labs( x = "Drat definition, in log", y = "Mile per hours, in log", color = "Gear", title = "Relation between Mile per hours and drat", subtitle = "Relationship break down by gear class", caption = "Authors own computation" )
lähtö:
ggsave("my_fantastic_plot.png")
lähtö:
## Saving 5 x 4 in image
Huomautuksia: Vain pedagogista tarkoitusta varten loimme toiminnon nimeltä open_folder() avaamaan hakemistokansion puolestasi. Sinun tarvitsee vain suorittaa alla oleva koodi ja katsoa, mihin kuva on tallennettu. Sinun pitäisi nähdä tiedostonimet my_fantastic_plot.png.
# Run this code to create the function open_folder <- function(dir) { if (.Platform['OS.type'] == "windows") { shell.exec(dir) } else { system(paste(Sys.getenv("R_BROWSER"), dir)) } } # Call the function to open the folder open_folder(directory)
Yhteenveto
Voit tehdä yhteenvedon argumenteista sirontakaavion luomiseksi alla olevaan taulukkoon:
Tavoite | Koodi |
---|---|
Perussironnakaavio |
ggplot(df, aes(x = x1, y = y)) + geom_point() |
Sirontakuvaaja väriryhmällä |
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) + stat_smooth(method = "lm") |
Lisää sovitetut arvot |
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) |
Lisää otsikko |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(title = paste("Hello Guru99")) |
Lisää tekstitys |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(subtitle = paste("Hello Guru99")) |
Nimeä x uudelleen |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(x = "X1") |
Nimeä uudelleen y |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(y = "y1") |
Hallitse mittakaavaa |
ggplot(df, aes(x = x1, y = y)) + geom_point() + scale_y_continuous(breaks = seq(10, 35, by = 10)) + scale_x_continuous(breaks = seq(2, 5, by = 1) |
Luo lokit |
ggplot(df, aes(x =log(x1), y = log(y))) + geom_point() |
Teema |
ggplot(df, aes(x = x1, y = y)) + geom_point() + theme_classic() |
Säästä |
ggsave("my_fantastic_plot.png") |