Grafer er den tredje delen av prosessen med dataanalyse. Den første delen handler om datautvinning , den andre delen handler om rengjøring og manipulering av dataene . Endelig kan dataforskeren trenge å kommunisere resultatene grafisk .
Jobben til datavitenskapsmannen kan gjennomgås i det følgende bildet
- Dataforskers første oppgave er å definere et forskningsspørsmål. Dette forskningsspørsmålet avhenger av prosjektets mål og mål.
- Etter det er en av de mest fremtredende oppgavene funksjonsteknikk. Dataforskeren trenger å samle inn, manipulere og rense dataene
- Når dette trinnet er fullført, kan han begynne å utforske datasettet. Noen ganger er det nødvendig å avgrense og endre den opprinnelige hypotesen på grunn av en ny oppdagelse.
- Når den forklarende analysen er oppnådd, må datavitenskapsmannen vurdere leserens kapasitet til å forstå de underliggende begrepene og modellene .
- Resultatene hans skal presenteres i et format som alle interessenter kan forstå. En av de beste metodene for å kommunisere resultatene er gjennom en graf .
- Grafer er et utrolig verktøy for å forenkle kompleks analyse.
I denne veiledningen vil du lære-
- ggplot2-pakke
- Scatterplot
- Bytt akse
- Spred plott med tilpassede verdier
- Legg til informasjon i grafen
- Gi nytt navn til x-akse og y-akse
- Kontroller vekten
- Tema
- Lagre tomter
ggplot2-pakke
Denne delen av opplæringen fokuserer på hvordan du lager grafer / diagrammer med R.
I denne opplæringen skal du bruke ggplot2-pakken. Denne pakken er bygd på den konsekvente underliggende boken Grammatikk av grafikk skrevet av Wilkinson, 2005. ggplot2 er veldig fleksibel, inneholder mange temaer og plotspesifikasjoner på et høyt abstraksjonsnivå. Med ggplot2 kan du ikke plotte tredimensjonal grafikk og lage interaktiv grafikk.
I ggplot2 består en graf av følgende argumenter:
- data
- estetisk kartlegging
- geometrisk objekt
- statistiske transformasjoner
- vekter
- koordinatsystem
- posisjonsjusteringer
- fasettering
Du vil lære hvordan du kan kontrollere disse argumentene i opplæringen.
Den grunnleggende syntaksen til ggplot2 er:
ggplot(data, mapping=aes()) +geometric objectarguments:data: Dataset used to plot the graphmapping: Control the x and y-axisgeometric 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()`
Scatterplot
La oss se hvordan ggplot fungerer med mtcars-datasettet. Du starter med å plotte en scatterplot av mpg-variabelen og drat-variabelen.
Grunnleggende spredningsdiagram
library(ggplot2)ggplot(mtcars, aes(x = drat, y = mpg)) +geom_point()
Kode Forklaring
- Du sender først datasettet mtcars til ggplot.
- Inne i argumentet aes () legger du til x-aksen og y-aksen.
- + Tegnet betyr at du vil at R skal fortsette å lese koden. Det gjør koden mer lesbar ved å bryte den.
- Bruk geom_point () for det geometriske objektet.
Produksjon:
Spred plott med grupper
Noen ganger kan det være interessant å skille verdiene etter en gruppe data (dvs. faktornivådata).
ggplot(mtcars, aes(x = mpg, y = drat)) +geom_point(aes(color = factor(gear)))
Kode Forklaring
- Aes () inne i geom_point () styrer fargen på gruppen. Gruppen skal være en faktorvariabel. Dermed konverterer du variabelt gir i en faktor.
- Til sammen har du koden aes (color = factor (gear)) som endrer fargen på prikkene.
Produksjon:
Bytt akse
Omskalering av data er en stor del av datavitenskapsmannen. I sjeldne tilfeller kommer data i en fin klokkeform. En løsning for å gjøre dataene dine mindre følsomme for avvikere er å omskalere dem.
ggplot(mtcars, aes(x = log(mpg), y = log(drat))) +geom_point(aes(color = factor(gear)))
Kode Forklaring
- Du transformerer x- og y-variablene i logg () direkte inne i aes () -kartleggingen.
Merk at enhver annen transformasjon kan brukes, for eksempel standardisering eller normalisering.
Produksjon:
Spred plott med tilpassede verdier
Du kan legge til et annet nivå av informasjon i grafen. Du kan plotte den tilpassede verdien av en lineær regresjon.
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
Kode Forklaring
- graf: Du lagrer grafen din i variabelgrafen. Det er nyttig for videre bruk eller unngå for kompliserte koder
- Argumentet stat_smooth () styrer for utjevningsmetoden
- metode = "lm": Lineær regresjon
- col = "# C42126": Kode for den røde fargen på linjen
- se = FALSE: Ikke vis standardfeilen
- størrelse = 1: størrelsen på linjen er 1
Produksjon:
Merk at andre utjevningsmetoder er tilgjengelige
- glm
- gam
- loess: standardverdi
- kant
Legg til informasjon i grafen
Så langt har vi ikke lagt til informasjon i grafene. Grafer må være informative. Leseren skal se historien bak dataanalysen bare ved å se på grafen uten å henvise til ytterligere dokumentasjon. Derfor trenger grafer gode etiketter. Du kan legge til etiketter med labs () -funksjonen.
Den grunnleggende syntaksen for lab () er:
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-axisExample:lab(title = "Hello Guru99", subtitle = "My first plot")
Legg til en tittel
En obligatorisk informasjon å legge til er åpenbart en tittel.
my_graph +labs(title = "Plot Mile per hours and drat, in log")
Kode Forklaring
- my_graph: Du bruker grafen du lagret. Det unngår å omskrive alle kodene hver gang du legger til ny informasjon i grafen.
- Du pakker tittelen inne i laboratoriet ().
- Kode for den røde fargen på linjen
- se = FALSE: Ikke vis standardfeilen
- størrelse = 1: størrelsen på linjen er 1
Produksjon:
Legg til en tittel med et dynamisk navn
En dynamisk tittel er nyttig for å legge til mer presis informasjon i tittelen.
Du kan bruke lim inn () -funksjonen til å skrive ut statisk tekst og dynamisk tekst. Den grunnleggende syntaksen for lim () er:
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
Eksempel:
A <-2010paste("The first year is", A)
Produksjon:
## [1] "The first year is 2010"
B <-2018paste("The first year is", A, "and the last year is", B)
Produksjon:
## [1] "The first year is 2010 and the last year is 2018"
Du kan legge til et dynamisk navn i grafen vår, nemlig gjennomsnittet av mpg.
mean_mpg <- mean(mtcars$mpg)my_graph + labs(title = paste("Plot Mile per hours and drat, in log. Average mpg is", mean_mpg))
Kode Forklaring
- Du oppretter gjennomsnittet av mpg med gjennomsnitt (mtcars $ mpg) lagret i mean_mpg-variabelen
- Du bruker lim () med mean_mpg for å opprette en dynamisk tittel som returnerer gjennomsnittsverdien til mpg
Produksjon:
Legg til en undertekst
To ekstra detaljer kan gjøre grafen din mer eksplisitt. Du snakker om underteksten og bildeteksten. Undertittelen går rett under tittelen. Bildeteksten kan informere om hvem som har beregnet og kilden til dataene.
my_graph +labs(title ="Relation between Mile per hours and drat",subtitle ="Relationship break down by gear class",caption = "Authors own computation")
Kode Forklaring
- Inne i laboratoriet () la du til:
- title = "Forholdet mellom mil per time og drat": Legg til tittel
- subtitle = "Forhold fordelt på girklasse": Legg til undertekst
- caption = "Forfatterens egen beregning: Legg til billedtekst
- Du skiller hver ny informasjon med komma,,
- Merk at du bryter linjene med kode. Det er ikke obligatorisk, og det hjelper bare å lese koden lettere
Produksjon:
Gi nytt navn til x-akse og y-akse
Variablene i datasettet er kanskje ikke alltid eksplisitte, eller bruk _ når det er flere ord (dvs. GDP_CAP). Du vil ikke at et slikt navn skal vises i grafen din. Det er viktig å endre navnet eller legge til flere detaljer, som enhetene.
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")
Kode Forklaring
- Inne i laboratoriet () la du til:
- x = "Dratdefinisjon": Endre navnet på x-aksen
- y = "Kilometer per time": Endre navnet på y-aksen
Produksjon:
Kontroller vekten
Du kan kontrollere skalaen på aksen.
Funksjonen seq () er praktisk når du trenger å lage en sekvens med tall. Den grunnleggende syntaksen er:
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`
Hvis du for eksempel vil opprette et område fra 0 til 12 med trinn 3, vil du ha fire tall, 0 4 8 12
seq(0, 12,4)
Produksjon:
## [1] 0 4 8 12
Du kan kontrollere skalaen til x-aksen og y-aksen som nedenfor
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")
Kode Forklaring
- Funksjonen scale_y_continuous () styrer y-aksen
- Funksjonen scale_x_continuous () styrer x-aksen .
- Parameterbruddene styrer aksedelingen. Du kan legge til rekkefølgen på nummeret manuelt eller bruke funksjonen seq ():
- seq (1, 3.6, by = 0.2): Lag seks tall fra 2.4 til 3.4 med et trinn på 3
- seq (1, 1.6, by = 0.1): Lag syv tall fra 1 til 1.6 med trinn 1
Produksjon:
Tema
Til slutt tillater R oss å tilpasse tomten med forskjellige temaer. Biblioteket ggplot2 inneholder åtte temaer:
- theme_bw ()
- tema_lys ()
- temaklasse ()
- theme_linedraw ()
- theme_dark ()
- tema_minimal ()
- tema_grå ()
- 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")
Produksjon:
Lagre tomter
Etter alle disse trinnene er det på tide å lagre og dele grafen din. Du legger til ggsave ('NAVN PÅ FILEN) rett etter at du har tegnet grafen, og den blir lagret på harddisken.
Grafen lagres i arbeidskatalogen. For å sjekke arbeidskatalogen kan du kjøre denne koden:
directory <-getwd()directory
La oss plotte den fantastiske grafen din, lagre den og sjekke plasseringen
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")
Produksjon:
ggsave("my_fantastic_plot.png.webp")
Produksjon:
## Saving 5 x 4 in image
Merk : Bare for pedagogisk formål opprettet vi en funksjon som heter open_folder () for å åpne katalogmappen for deg. Du trenger bare å kjøre koden nedenfor og se hvor bildet er lagret. Du skal se filnavnene my_fantastic_plot.png.webp.
# Run this code to create thefunctionopen_folder <- function(dir) {if (.Platform['OS.type'] == "windows") {shell.exec(dir)} else {system(paste(Sys.getenv("R_BROWSER"), dir))}}# Call thefunction to open the folder open_folder(directory)
Sammendrag
Du kan oppsummere argumentene for å lage et spredningsdiagram i tabellen nedenfor:
Objektiv |
Kode |
---|---|
Grunnleggende spredningsdiagram |
ggplot(df, aes(x = x1, y = y)) + geom_point() |
Spred plott med fargegruppe |
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) + stat_smooth(method = "lm") |
Legg til tilpassede verdier |
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) |
Legg til tittel |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(title = paste("Hello Guru99")) |
Legg til undertekst |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(subtitle = paste("Hello Guru99")) |
Gi nytt navn til x |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(x = "X1") |
Gi nytt navn til y |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(y = "y1") |
Kontroller skalaen |
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) |
Lag logger |
ggplot(df, aes(x =log(x1), y = log(y))) + geom_point() |
Tema |
ggplot(df, aes(x = x1, y = y)) + geom_point() + theme_classic() |
Lagre |
ggsave("my_fantastic_plot.png.webp") |