Spred plott i R ved hjelp av ggplot2 (med eksempel)

Innholdsfortegnelse:

Anonim

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 <-2018

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