Rasprši crtež u R koristeći ggplot2 (s primjerom)

Sadržaj:

Anonim

Grafovi su treći dio procesa analize podataka. Prvi dio odnosi se na izdvajanje podataka , drugi dio bavi se čišćenjem i manipulacijom podacima . Napokon, znanstvenik podataka možda će trebati grafički priopćiti svoje rezultate .

Posao znanstvenika podataka može se pregledati na sljedećoj slici

  • Prvi zadatak znanstvenika podataka jest definiranje istraživačkog pitanja. Ovo istraživačko pitanje ovisi o ciljevima i ciljevima projekta.
  • Nakon toga, jedan od najistaknutijih zadataka je inženjering značajki. Znanstvenik podataka treba prikupiti, manipulirati i očistiti podatke
  • Kada je ovaj korak završen, može započeti s istraživanjem skupa podataka. Ponekad je potrebno pročistiti i promijeniti izvornu hipotezu zbog novog otkrića.

  • Kada se postigne objašnjenja , znanstvenik podataka mora uzeti u obzir sposobnost čitatelja da razumije temeljne koncepte i modele .
  • Njegovi bi rezultati trebali biti predstavljeni u formatu koji svi dionici mogu razumjeti. Jedna od najboljih metoda za priopćavanje rezultata je putem grafikona .
  • Grafovi su nevjerojatan alat za pojednostavljivanje složene analize.

U ovom vodiču naučit ćete-

  • ggplot2 paket
  • Scatterplot
  • Promijenite os
  • Raspršena crta s ugrađenim vrijednostima
  • Dodajte podatke na grafikon
  • Preimenujte os x i os y
  • Kontrolirajte vagu
  • Tema
  • Spremi parcele

ggplot2 paket

Ovaj se dio tutorijala fokusira na to kako napraviti grafikone / grafikone s R.

U ovom ćete uputstvu koristiti ggplot2 paket. Ovaj se paket temelji na dosljednoj osnovi knjige Gramatika grafika koju je napisao Wilkinson, 2005. ggplot2 je vrlo fleksibilan, uključuje mnoge teme i specifikaciju zapleta na visokoj razini apstrakcije. S ggplot2 ne možete crtati trodimenzionalnu grafiku i stvarati interaktivnu grafiku.

U ggplot2, grafikon se sastoji od sljedećih argumenata:

  • podaci
  • estetsko mapiranje
  • geometrijski objekt
  • statističke transformacije
  • vaga
  • koordinatni sustav
  • podešavanja položaja
  • fasetiranje

U tutorialu ćete naučiti kako kontrolirati te argumente.

Osnovna sintaksa ggplot2 je:

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

Pogledajmo kako ggplot radi sa skupom podataka mtcars. Počinjete s crtanjem raspršenog dijagrama varijable mpg i drat.

Osnovna raspršena parcela

library(ggplot2)ggplot(mtcars, aes(x = drat, y = mpg)) +geom_point()

Objašnjenje koda

  • Prvo prosljeđujete skup podataka mtcars u ggplot.
  • Unutar argumenta aes () dodajete os x i os y.
  • Znak + znači da želite da R nastavi čitati kod. Kôd čini čitljivijim razbijanjem.
  • Upotrijebite geom_point () za geometrijski objekt.

Izlaz:

Raspršena radnja sa skupinama

Ponekad može biti zanimljivo razlikovati vrijednosti prema skupini podataka (tj. Podaci na razini faktora).

ggplot(mtcars, aes(x = mpg, y = drat)) +geom_point(aes(color = factor(gear)))

Objašnjenje koda

  • Aes () unutar geom_point () kontrolira boju grupe. Skupina bi trebala biti faktor varijabla. Dakle, varijabilni zupčanik pretvorite u faktor.
  • Sve u svemu, imate kod aes (boja = faktor (zupčanik)) koji mijenja boju točaka.

Izlaz:

Promijenite os

Premjeravanje podataka velik je dio posla znanstvenika podataka. Podaci u rijetkim prilikama dolaze u lijepom obliku zvona. Jedno od rješenja za smanjenje osjetljivosti vaših podataka na njihovo smanjenje je njihovo skaliranje.

ggplot(mtcars, aes(x = log(mpg), y = log(drat))) +geom_point(aes(color = factor(gear)))

Objašnjenje koda

  • Varijable x i y transformirate u log () izravno unutar mapiranja aes ().

Imajte na umu da se može primijeniti bilo koja druga transformacija, poput standardizacije ili normalizacije.

Izlaz:

Raspršena crta s ugrađenim vrijednostima

Na grafikon možete dodati još jednu razinu podataka. Možete nacrtati ugrađenu vrijednost linearne regresije.

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

Objašnjenje koda

  • graf: Spremate svoj graf u varijabilni graf. Korisno je za daljnju upotrebu ili izbjegavanje previše složenih redova kodova
  • Argument stat_smooth () kontrolira metodu zaglađivanja
  • method = "lm": Linearna regresija
  • col = "# C42126": Šifra crvene boje crte
  • se = FALSE: Ne prikazuj standardnu ​​pogrešku
  • veličina = 1: veličina crte je 1

Izlaz:

Imajte na umu da su dostupne i druge metode zaglađivanja

  • glm
  • gam
  • les: zadana vrijednost
  • obod

Dodajte podatke na grafikon

Do sada nismo dodali podatke u grafikone. Grafovi moraju biti informativni. Čitatelj bi trebao vidjeti priču koja stoji iza analize podataka samo gledajući graf bez pozivanja na dodatnu dokumentaciju. Dakle, grafikoni trebaju dobre oznake. Oznake možete dodati pomoću funkcije labs ().

Osnovna sintaksa za lab () je:

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

Dodajte naslov

Jedna obavezna informacija koju treba dodati je očito naslov.

my_graph +labs(title = "Plot Mile per hours and drat, in log")

Objašnjenje koda

  • my_graph: Koristite graf koji ste pohranili. Izbjegava se prepisivanje svih kodova svaki put kad na grafikon dodate nove podatke.
  • Naslov zamotate u laboratorij ().
  • Šifra crvene boje crte
  • se = FALSE: Ne prikazuj standardnu ​​pogrešku
  • veličina = 1: veličina crte je 1

Izlaz:

Dodajte naslov s dinamičkim nazivom

Dinamični naslov koristan je za dodavanje preciznijih podataka u naslov.

Funkciju paste () možete koristiti za ispis statičnog i dinamičkog teksta. Osnovna sintaksa paste () je:

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

Primjer:

A <-2010paste("The first year is", A)

Izlaz:

## [1] "The first year is 2010"
B <-2018

paste("The first year is", A, "and the last year is", B)

Izlaz:

## [1] "The first year is 2010 and the last year is 2018" 

Na naš grafikon možete dodati dinamičko ime, odnosno prosjek mpg.

mean_mpg <- mean(mtcars$mpg)my_graph + labs(title = paste("Plot Mile per hours and drat, in log. Average mpg is", mean_mpg))

Objašnjenje koda

  • Prosjek mpg stvarate sa srednjom vrijednosti (mtcars $ mpg) pohranjenom u varijablu mean_mpg
  • Koristite paste () sa mean_mpg za stvaranje dinamičkog naslova koji vraća srednju vrijednost mpg

Izlaz:

Dodajte podnaslov

Dva dodatna detalja mogu vaš grafikon učiniti jasnijim. Govorite o podnaslovu i naslovu. Podnaslov ide odmah ispod naslova. Natpis može informirati o tome tko je izvršio izračunavanje i izvor podataka.

my_graph +labs(title ="Relation between Mile per hours and drat",subtitle ="Relationship break down by gear class",caption = "Authors own computation")

Objašnjenje koda

  • Unutar laboratorija () dodali ste:
    • title = "Odnos između milja po satima i drata": dodajte naslov
    • subtitle = "Veza podeljena prema klasi zupčanika": Dodajte podnaslov
    • caption = "Autorski izračun: dodajte naslov
    • Svaku novu informaciju odvajate zarezom,,
  • Imajte na umu da ste prekinuli retke koda. Nije obvezno i ​​pomaže samo lakše čitanje koda

Izlaz:

Preimenujte os x i os y

Sama varijabla u skupu podataka možda neće uvijek biti eksplicitna ili po dogovoru upotrebljavaju _ kada postoji više riječi (tj. GDP_CAP). Ne želite da se takvo ime pojavljuje na vašem grafikonu. Važno je promijeniti ime ili dodati više detalja, poput jedinica.

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

Objašnjenje koda

  • Unutar laboratorija () dodali ste:
    • x = "Drat definicija": Promijenite ime x osi
    • y = "Milja na sat": Promijenite naziv y osi

Izlaz:

Kontrolirajte vagu

Možete kontrolirati mjerilo osi.

Funkcija seq () prikladna je kada trebate stvoriti niz brojeva. Osnovna sintaksa je:

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`

Na primjer, ako želite stvoriti raspon od 0 do 12 s korakom od 3, imat ćete četiri broja, 0 4 8 12

seq(0, 12,4)

Izlaz:

## [1] 0 4 8 12 

Možete kontrolirati mjerilo osi x i osi y kao što je prikazano ispod

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

Objašnjenje koda

  • Funkcija scale_y_continuous () kontrolira y-os
  • Funkcija scale_x_continuous () kontrolira x-os .
  • Parametar break kontrolira razdvajanje osi. Možete ručno dodati slijed broja ili koristiti funkciju seq ():
    • seq (1, 3,6, za = 0,2): Stvorite šest brojeva od 2,4 do 3,4 s korakom 3
    • seq (1, 1.6, by = 0.1): Stvorite sedam brojeva od 1 do 1.6 s korakom 1

Izlaz:

Tema

Konačno, R nam omogućuje prilagodbu radnje različitim temama. Biblioteka ggplot2 uključuje osam tema:

  • theme_bw ()
  • svjetlo_teme ()
  • klasa_teme ()
  • theme_linedraw ()
  • tema_temne ()
  • tema_minimalna ()
  • tema_siva ()
  • 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")

Izlaz:

Spremi parcele

Nakon svih ovih koraka, vrijeme je da spremite i podijelite svoj grafikon. Dodajete ggsave ('IME DATOTEKE) odmah nakon što nacrtate grafikon i on će biti pohranjen na tvrdi disk.

Grafikon se sprema u radni direktorij. Da biste provjerili radni direktorij, možete pokrenuti ovaj kod:

directory <-getwd()directory 

Nacrtajmo vaš fantastični grafikon, spremimo ga i provjerimo mjesto

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

Izlaz:

ggsave("my_fantastic_plot.png.webp")

Izlaz:

## Saving 5 x 4 in image

Napomena : Samo u pedagoške svrhe stvorili smo funkciju koja se zove open_folder () da bi vam otvorila mapu direktorija. Samo trebate pokrenuti donji kod i vidjeti gdje je slika pohranjena. Trebali biste vidjeti nazive datoteka 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)

Sažetak

Argumente možete sažeti za stvaranje raspršene parcele u tablici ispod:

Cilj

Kodirati

Osnovna raspršena parcela

ggplot(df, aes(x = x1, y = y)) + geom_point()

Raspršena parcela s grupom boja

ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) + stat_smooth(method = "lm")

Dodajte uklopljene vrijednosti

ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1))

Dodaj Naslov

ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(title = paste("Hello Guru99"))

Dodajte titl

ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(subtitle = paste("Hello Guru99"))

Preimenuj x

ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(x = "X1")

Preimenuj y

ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(y = "y1")

Kontrolirajte ljestvicu

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)

Stvaranje dnevnika

ggplot(df, aes(x =log(x1), y = log(y))) + geom_point()

Tema

ggplot(df, aes(x = x1, y = y)) + geom_point() + theme_classic()

Uštedjeti

ggsave("my_fantastic_plot.png.webp")