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.

Hajumisdiagramm R-s

  • 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:

Põhiline hajuvusdiagramm

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:

Hajutusdiagramm gruppidega

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:

Muuda telge

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:

Sobivate väärtustega hajuvusdiagramm

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:

Lisa pealkiri

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 dünaamilise nimega pealkiri

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:

Lisage alapealkiri

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:

Nimetage ümber x-telg ja y-telg

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:

Kontrollige kaalusid

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:

teema

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:

Salvesta krundid

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

Võta see postitus kokku järgmiselt: