Scatter Plot în R folosind ggplot2 (cu Exemplu)

Cuprins:

Anonim

Graficele reprezintă a treia parte a procesului de analiză a datelor. Prima parte este despre extragerea datelor , a doua parte se referă la curățarea și manipularea datelor . În cele din urmă, cercetătorul de date ar putea avea nevoie să-și comunice rezultatele grafic .

Slujba cercetătorului în date poate fi revizuită în imaginea următoare

  • Prima sarcină a unui om de știință de date este de a defini o întrebare de cercetare. Această întrebare de cercetare depinde de obiectivele și obiectivele proiectului.
  • După aceea, una dintre cele mai importante sarcini este ingineria caracteristicilor. Omul de știință al datelor trebuie să colecteze, să manipuleze și să curățe datele
  • Când acest pas este finalizat, el poate începe să exploreze setul de date. Uneori, este necesar să rafinăm și să schimbăm ipoteza originală datorită unei noi descoperiri.

  • Când se realizează analiza explicativă , omul de știință al datelor trebuie să ia în considerare capacitatea cititorului de a înțelege conceptele și modelele de bază .
  • Rezultatele sale ar trebui prezentate într-un format pe care toate părțile interesate să le poată înțelege. Una dintre cele mai bune metode de comunicare a rezultatelor este prin intermediul unui grafic .
  • Graficele sunt un instrument incredibil pentru simplificarea analizei complexe.

În acest tutorial, veți învăța-

  • pachetul ggplot2
  • Scatterplot
  • Schimbați axa
  • Grafic de împrăștiere cu valori ajustate
  • Adăugați informații în grafic
  • Redenumiți axa x și axa y
  • Controlează cântarele
  • Temă
  • Salvați parcele

pachetul ggplot2

Această parte a tutorialului se concentrează pe modul de realizare a graficelor / diagramelor cu R.

În acest tutorial, veți folosi pachetul ggplot2. Acest pachet este construit pe baza consecventă a cărții Gramatica grafică scrisă de Wilkinson, 2005. ggplot2 este foarte flexibil, încorporează multe teme și specificații de complot la un nivel ridicat de abstractizare. Cu ggplot2, nu puteți trage grafică tridimensională și nu puteți crea grafică interactivă.

În ggplot2, un grafic este compus din următoarele argumente:

  • date
  • cartografierea estetică
  • obiect geometric
  • transformări statistice
  • solzi
  • sistem de coordonate
  • reglări de poziție
  • fațetare

Veți învăța cum să controlați aceste argumente în tutorial.

Sintaxa de bază a ggplot2 este:

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

Să vedem cum funcționează ggplot cu setul de date mtcars. Începeți prin trasarea unui diagramă de dispersie a variabilei mpg și a variabilei drat.

Graficul de dispersie de bază

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

Explicarea codului

  • Mai întâi treceți setul de date mtcars către ggplot.
  • În argumentul aes (), adăugați axa x și axa y.
  • Semnul + înseamnă că doriți ca R să citească în continuare codul. Face codul mai lizibil prin ruperea acestuia.
  • Folosiți geom_point () pentru obiectul geometric.

Ieșire:

Scatter complot cu grupuri

Uneori, poate fi interesant să distingem valorile printr-un grup de date (adică date la nivel de factor).

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

Explicarea codului

  • Aes () din geom_point () controlează culoarea grupului. Grupul ar trebui să fie un factor variabil. Astfel, convertiți viteza variabilă într-un factor.
  • În total, aveți codul aes (culoare = factor (angrenaj)) care schimbă culoarea punctelor.

Ieșire:

Schimbați axa

Redimensionarea datelor este o mare parte a muncii cercetătorului în date. În cazuri rare, datele vin într-o formă frumoasă de clopot. O soluție pentru a face datele dvs. mai puțin sensibile la valori anormale este să le redimensionați.

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

Explicarea codului

  • Transformați variabilele x și y în log () direct în maparea aes ().

Rețineți că orice altă transformare poate fi aplicată, cum ar fi standardizarea sau normalizarea.

Ieșire:

Grafic de împrăștiere cu valori ajustate

Puteți adăuga un alt nivel de informații în grafic. Puteți trasa valoarea potrivită a unei regresii liniare.

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

Explicarea codului

  • grafic: vă stocați graficul în graficul variabil. Este util pentru o utilizare ulterioară sau pentru a evita o linie de coduri prea complexă
  • Argumentul stat_smooth () controlează metoda de netezire
  • method = "lm": Regresie liniară
  • col = "# C42126": Cod pentru culoarea roșie a liniei
  • se = FALS: Nu afișați eroarea standard
  • size = 1: dimensiunea liniei este 1

Ieșire:

Rețineți că sunt disponibile și alte metode de netezire

  • glm
  • gam
  • loess: valoare implicită
  • jantă

Adăugați informații în grafic

Până în prezent, nu am adăugat informații în grafice. Graficele trebuie să fie informative. Cititorul ar trebui să vadă povestea din spatele analizei datelor doar uitându-se la grafic fără a trimite documente suplimentare. Prin urmare, graficele au nevoie de etichete bune. Puteți adăuga etichete cu funcția labs ().

Sintaxa de bază pentru lab () este:

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

Adăugați un titlu

O informație obligatorie de adăugat este, evident, un titlu.

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

Explicarea codului

  • my_graph: Folosiți graficul pe care l-ați stocat. Evită rescrierea tuturor codurilor de fiecare dată când adăugați informații noi în grafic.
  • Înfășurați titlul în interiorul laboratorului ().
  • Cod pentru culoarea roșie a liniei
  • se = FALS: Nu afișați eroarea standard
  • size = 1: dimensiunea liniei este 1

Ieșire:

Adăugați un titlu cu un nume dinamic

Un titlu dinamic este util pentru a adăuga informații mai precise în titlu.

Puteți utiliza funcția paste () pentru a imprima text static și text dinamic. Sintaxa de bază a paste () este:

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

Exemplu:

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

Ieșire:

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

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

Ieșire:

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

Puteți adăuga un nume dinamic în graficul nostru, și anume media mpg.

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

Explicarea codului

  • Creați media mpg cu media (mtcars $ mpg) stocată în variabila mean_mpg
  • Folosiți paste () cu mean_mpg pentru a crea un titlu dinamic care returnează valoarea medie a mpg

Ieșire:

Adăugați un subtitlu

Două detalii suplimentare vă pot face graficul mai explicit. Vorbești despre subtitrare și subtitrare. Subtitrarea merge chiar sub titlu. Legenda poate informa despre cine a făcut calculul și sursa datelor.

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

Explicarea codului

  • În interiorul laboratorului (), ați adăugat:
    • title = "Relația dintre mile pe ore și drat": Adăugați titlu
    • subtitrare = "Relația defalcare după clasa de viteze": Adăugați subtitrare
    • caption = "Calculul propriu al autorilor: Adăugați subtitrare
    • Separați fiecare informație nouă cu o virgulă,,
  • Rețineți că rupeți liniile de cod. Nu este obligatoriu și vă ajută doar să citiți codul mai ușor

Ieșire:

Redenumiți axa x și axa y

Variabilele înseși în setul de date ar putea să nu fie întotdeauna explicite sau, prin convenție, să utilizeze _ atunci când există mai multe cuvinte (adică GDP_CAP). Nu doriți ca un astfel de nume să apară în graficul dvs. Este important să schimbați numele sau să adăugați mai multe detalii, cum ar fi unitățile.

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

Explicarea codului

  • În interiorul laboratorului (), ați adăugat:
    • x = „Definiție drat”: schimbați numele axei x
    • y = „Mile pe ore”: schimbați numele axei y

Ieșire:

Controlează cântarele

Puteți controla scala axei.

Funcția seq () este convenabilă atunci când trebuie să creați o succesiune de numere. Sintaxa de bază este:

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`

De exemplu, dacă doriți să creați un interval de la 0 la 12 cu un pas de 3, veți avea patru numere, 0 4 8 12

seq(0, 12,4)

Ieșire:

## [1] 0 4 8 12 

Puteți controla scala axelor x și axa y, după cum se arată mai jos

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

Explicarea codului

  • Funcția scale_y_continuous () controlează axa y
  • Funcția scale_x_continuous () controlează axa x .
  • Pauzele parametrilor controlează împărțirea axei. Puteți adăuga manual secvența de număr sau puteți utiliza funcția seq ():
    • seq (1, 3.6, cu = 0.2): Creați șase numere de la 2.4 la 3.4 cu un pas de 3
    • sec. (1, 1,6, cu = 0,1): Creați șapte numere de la 1 la 1,6 cu un pas de 1

Ieșire:

Temă

În cele din urmă, R ne permite să personalizăm complotul cu diferite teme. Biblioteca ggplot2 include opt teme:

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

Ieșire:

Salvați parcele

După toți acești pași, este timpul să vă salvați și să partajați graficul. Adăugați ggsave ('NOMUL FIȘIERULUI) imediat după ce ați trasat graficul și acesta va fi stocat pe hard disk.

Graficul este salvat în directorul de lucru. Pentru a verifica directorul de lucru, puteți rula acest cod:

directory <-getwd()directory 

Să trasăm graficul fantastic, să-l salvăm și să verificăm locația

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

Ieșire:

ggsave("my_fantastic_plot.png.webp")

Ieșire:

## Saving 5 x 4 in image

Notă : Numai în scop pedagogic, am creat o funcție numită open_folder () pentru a deschide folderul director pentru dvs. Trebuie doar să rulați codul de mai jos și să vedeți unde este stocată imaginea. Ar trebui să vedeți numele unui fișier 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)

rezumat

Puteți rezuma argumentele pentru a crea un grafic scatter în tabelul de mai jos:

Obiectiv

Cod

Graficul de dispersie de bază

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

Grafic de împrăștiere cu grup de culori

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

Adăugați valori potrivite

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

Adauga titlu

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

Adaugă subtitrare

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

Redenumiți x

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

Redenumiți y

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

Controlați scala

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)

Creați jurnale

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

Temă

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

Salvați

ggsave("my_fantastic_plot.png.webp")