Hajumisgraafik R-is, kasutades ggplot2 (koos näitega)
Graafikud on andmeanalüüsi protsessi kolmas osa. Esimene osa räägib sellest andmete väljavõtmine, käsitleb teine osa andmete puhastamine ja manipuleerimine. Lõpuks võib andmeteadlane seda vajada edastada oma tulemused graafiliselt.
Andmeteadlase tööd saab üle vaadata järgmiselt pildilt
- Andmeteadlase esimene ülesanne on defineerida uurimisküsimus. See uurimisküsimus sõltub projekti eesmärkidest ja eesmärkidest.
- Pärast seda on üks silmapaistvamaid ülesandeid funktsioonide projekteerimine. Andmeteadlane peab andmeid koguma, nendega manipuleerima ja puhastama
- Kui see samm on lõpule viidud, saab ta hakata andmestikku uurima. Mõnikord on uue avastuse tõttu vaja esialgset hüpoteesi täpsustada ja muuta.
- Kui selgitav analüüs on saavutatud, peab andmeteadlane arvestama lugeja suutlikkusega mõista nende aluseks olevaid kontseptsioone ja mudeleid.
- Tema tulemused tuleks esitada kõigile sidusrühmadele arusaadavas vormingus. Üks parimaid meetodeid, edastama tulemused on läbi a graafik.
- Graafikud on uskumatu tööriist keeruka analüüsi lihtsustamiseks.
ggplot2 pakett
See õpetuse osa keskendub sellele, kuidas koostada R-ga graafikuid/diagramme.
Selles õpetuses kasutate paketti ggplot2. See pakett on üles ehitatud Wilkinsoni 2005. aasta raamatu Grammar of Grammar järjekindlale aluseks. ggplot2 on väga paindlik, sisaldab paljusid teemasid ja süžee spetsifikatsioone kõrgel abstraktsioonitasemel. ggplot2 abil ei saa te 3-mõõtmelist graafikat joonistada ega interaktiivset graafikat luua.
Rakenduses ggplot2 koosneb graafik järgmistest argumentidest:
- andmed
- esteetiline kaardistamine
- geomeetriline objekt
- statistilised teisendused
- Kaalud
- koordinaatide süsteem
- positsiooni reguleerimine
- lihvimine
Õpetusest saate teada, kuidas neid argumente juhtida.
ggplot2 põhisüntaks 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()`
Hajuvusdiagramm
Vaatame, kuidas ggplot mtcarsi andmestikuga töötab. Alustuseks joonistate muutuja mpg ja drat hajuvusdiagrammi.
Põhiline hajuvusdiagramm
library(ggplot2)
ggplot(mtcars, aes(x = drat, y = mpg)) +
geom_point()
Koodi selgitus
- Esmalt edastate andmestiku mtcars ggplotile.
- Argumendi aes() sisse lisate x-telje ja y-telje.
- + märk tähendab, et soovite, et R jätkaks koodi lugemist. See muudab koodi loetavamaks, purustades selle.
- Kasutage geomeetrilise objekti jaoks geom_point().
Väljund:
Rühmadega hajutatud joonis
Mõnikord võib olla huvitav väärtusi eristada andmerühma (st teguritaseme andmete) järgi.
ggplot(mtcars, aes(x = mpg, y = drat)) +
geom_point(aes(color = factor(gear)))
Koodi selgitus
- Geom_point() sees olev aes() kontrollib rühma värvi. Rühm peaks olema tegurimuutuja. Seega teisendate muutuva käigu teguriks.
- Kokku on teil kood aes(värv = tegur(käik)), mis muudab punktide värvi.
Väljund:
Muuda telge
Andmete muutmine on andmeteadlase töö suur osa. Harvadel juhtudel on andmed kena kellakujulisena. Üks lahendus andmete kõrvalekallete suhtes vähem tundlikuks muutmiseks on nende skaleerimine.
ggplot(mtcars, aes(x = log(mpg), y = log(drat))) +
geom_point(aes(color = factor(gear)))
Koodi selgitus
- Muutute x ja y muutujad logi()-s otse aes() vastenduses.
Pange tähele, et rakendada saab mis tahes muid teisendusi, näiteks standardimist või normaliseerimist.
Väljund:
Hajudiagramm koos sobitatud väärtustega
Saate graafikule lisada teise taseme teabe. Saate joonistada lineaarse regressiooni sobitatud väärtuse.
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
Koodi selgitus
- graafik: salvestate oma graafiku muutujagraafikusse. See on abiks edasisel kasutamisel või liiga keeruka koodirea vältimisel
- Argument stat_smooth() juhib silumismeetodit
- meetod = "lm": lineaarne regressioon
- col = “#C42126”: joone punase värvi kood
- se = VÄÄR: ärge kuvage standardviga
- suurus = 1: joone suurus on 1
Väljund:
Pange tähele, et saadaval on ka muud silumismeetodid
- glm
- gam
- löss: vaikeväärtus
- pöid
Lisage graafikule teave
Seni pole me graafikutesse infot lisanud. Graafikud peavad olema informatiivsed. Lugeja peaks andmeanalüüsi taga olevat lugu nägema lihtsalt graafikut vaadates, ilma täiendavatele dokumentidele viitamata. Seetõttu vajavad graafikud häid silte. Silte saate lisada funktsiooni Labs() abil.
Lab() põhisüntaks 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")
Lisage pealkiri
Üks kohustuslik lisatav teave on ilmselgelt pealkiri.
my_graph +
labs(
title = "Plot Mile per hours and drat, in log"
)
Koodi selgitus
- my_graph: kasutate salvestatud graafikut. See väldib kõigi koodide ümberkirjutamist iga kord, kui lisate graafikule uut teavet.
- Mähite pealkirja labori() sisse.
- Joone punase värvi kood
- se = VÄÄR: ärge kuvage standardviga
- suurus = 1: joone suurus on 1
Väljund:
Lisage dünaamilise nimega pealkiri
Dünaamiline pealkiri aitab pealkirjale täpsemat teavet lisada.
Staatilise ja dünaamilise teksti printimiseks saate kasutada funktsiooni paste(). Paste() põhisüntaks 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
Näide:
A <-2010
paste("The first year is", A)
Väljund:
## [1] "The first year is 2010"
B <-2018
paste("The first year is", A, "and the last year is", B)
Väljund:
## [1] "The first year is 2010 and the last year is 2018"
Saate meie graafikule lisada dünaamilise nime, nimelt mpg keskmise.
mean_mpg <- mean(mtcars$mpg)
my_graph + labs(
title = paste("Plot Mile per hours and drat, in log. Average mpg is", mean_mpg)
)
Koodi selgitus
- Loote mpg keskmise keskmise(mtcars$mpg), mis on salvestatud muutujasse mean_mpg
- Kasutate paste() koos keskmise_mpg-ga, et luua dünaamiline pealkiri, mis tagastab mpg keskmise väärtuse
Väljund:
Lisage alapealkiri
Kaks täiendavat detaili võivad muuta teie graafiku selgemaks. Sa räägid alapealkirjast ja pealdisest. Alapealkiri on kohe pealkirja all. Pealdis võib anda teada, kes arvutas, ja andmete allikast.
my_graph +
labs(
title =
"Relation between Mile per hours and drat",
subtitle =
"Relationship break down by gear class",
caption = "Authors own computation"
)
Koodi selgitus
- Laboris() lisasite:
- title = "Miili tunni ja draati vaheline suhe": lisage pealkiri
- subtitle = "Seoste jaotus käigukasti järgi": lisage alapealkiri
- caption = "Autorite enda arvutus: lisage pealdis
- Eraldate iga uue teabe komaga,
- Pange tähele, et katkestate koodiread. See ei ole kohustuslik ja see aitab ainult koodi lihtsamalt lugeda
Väljund:
Nimetage ümber x-telg ja y-telg
Muutujad ise andmestikus ei pruugi alati olla selgesõnalised või kasutada tavapäraselt _, kui on mitu sõna (st GDP_CAP). Te ei soovi, et selline nimi teie graafikule ilmuks. Oluline on muuta nime või lisada rohkem üksikasju, näiteks ühikuid.
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"
)
Koodi selgitus
- Laboris() lisasite:
- x = "Drat definition": muutke x-telje nime
- y = "Mile per hours": muutke y-telje nime
Väljund:
Kontrollige kaalusid
Saate juhtida telje skaalat.
Funktsioon seq() on mugav, kui on vaja luua numbrijada. Põhiline süntaks 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`
Näiteks kui soovite luua vahemiku 0 kuni 12 sammuga 3, on teil neli numbrit: 0 4 8 12
seq(0, 12,4)
Väljund:
## [1] 0 4 8 12
Saate juhtida x-telje ja y-telje skaalat nagu allpool
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"
)
Koodi selgitus
- Funktsioon scale_y_continuous() juhib y-telg
- Funktsioon scale_x_continuous() juhib x-telg.
- Parameetri katkestused juhivad telje poolitamist. Saate käsitsi lisada numbrijada või kasutada funktsiooni seq():
- seq(1, 3.6, by = 0.2): looge kuus arvu vahemikus 2.4 kuni 3.4 sammuga 3
- seq(1, 1.6, by = 0.1): looge seitse numbrit vahemikus 1 kuni 1.6 sammuga 1
Väljund:
teema
Lõpuks võimaldab R meil kohandada süžeed erinevate teemadega. Teek ggplot2 sisaldab kaheksat teemat:
- theme_bw()
- theme_light()
- theme_classis()
- theme_linedraw()
- theme_dark()
- theme_minimal()
- theme_gray()
- 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"
)
Väljund:
Salvesta krundid
Pärast kõiki neid samme on aeg graafik salvestada ja jagada. Lisate kohe pärast graafiku koostamist ggsave('FAILI NIMI) ja see salvestatakse kõvakettale.
Graafik salvestatakse töökataloogi. Töökataloogi kontrollimiseks võite käivitada selle koodi:
directory <-getwd() directory
Joonistame teie fantastilise graafiku, salvestame selle ja kontrollime asukohta
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"
)
Väljund:
ggsave("my_fantastic_plot.png")
Väljund:
## Saving 5 x 4 in image
märkused: Ainult pedagoogilistel eesmärkidel lõime kataloogikausta avamiseks teie jaoks funktsiooni open_folder(). Peate lihtsalt käivitama alloleva koodi ja vaatama, kus pilt on salvestatud. Peaksite nägema failinimesid 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)
kokkuvõte
Allolevas tabelis saate hajuvusdiagrammi loomiseks argumendid kokku võtta:
| Eesmärk | kood |
|---|---|
| Põhiline hajuvusdiagramm |
ggplot(df, aes(x = x1, y = y)) + geom_point() |
| Hajudiagramm värvirühmaga |
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) + stat_smooth(method = "lm") |
| Lisage sobitatud väärtused |
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) |
| Lisage pealkiri |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(title = paste("Hello Guru99"))
|
| Lisa alapealkiri |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(subtitle = paste("Hello Guru99"))
|
| Nimeta x ümber |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(x = "X1") |
| Nimetage y ümber |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(y = "y1") |
| Kontrollige skaalat |
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) |
| Loo logid |
ggplot(df, aes(x =log(x1), y = log(y))) + geom_point() |
| teema |
ggplot(df, aes(x = x1, y = y)) + geom_point() + theme_classic() |
| Säästa |
ggsave("my_fantastic_plot.png")
|












