Grafikai yra trečioji duomenų analizės proceso dalis. Pirmoji dalis yra apie duomenų išskyrimą , antroji - apie duomenų valymą ir manipuliavimą . Pagaliau duomenų mokslininkui gali tekti savo rezultatus paviešinti grafiškai .
Duomenų mokslininko darbą galima peržiūrėti šiame paveikslėlyje
- Pirmoji duomenų mokslininko užduotis yra apibrėžti tyrimo klausimą. Šis tyrimo klausimas priklauso nuo projekto tikslų ir uždavinių.
- Po to viena ryškiausių užduočių yra funkcijų inžinerija. Duomenų mokslininkas turi rinkti duomenis, jais manipuliuoti ir juos išvalyti
- Baigęs šį veiksmą, jis gali pradėti tyrinėti duomenų rinkinį. Kartais dėl naujo atradimo būtina patikslinti ir pakeisti pradinę hipotezę.
- Atlikus aiškinamąją analizę, duomenų mokslininkas turi atsižvelgti į skaitytojo gebėjimą suprasti pagrindines sąvokas ir modelius .
- Jo rezultatai turėtų būti pateikiami visiems suinteresuotiems asmenims suprantama forma. Vienas iš geriausių rezultatų perdavimo būdų yra grafikas .
- Grafikai yra neįtikėtinas įrankis supaprastinti sudėtingą analizę.
Šioje pamokoje sužinosite
- „ggplot2“ paketas
- Scatterplot
- Keisti ašį
- Sklaidos diagrama su pritaikytomis vertėmis
- Pridėkite informacijos prie diagramos
- Pervardykite x ir y ašis
- Valdykite svarstykles
- Tema
- Išsaugoti sklypus
„ggplot2“ paketas
Šioje mokymo programos dalyje daugiausia dėmesio skiriama grafikų / diagramų sudarymui su R.
Šioje pamokoje ketinate naudoti „ggplot2“ paketą. Šis paketas sukurtas remiantis nuoseklia knygos „Gramatika grafika“, parašytos Wilkinsono, 2005 m. Pagrindu. Naudodami „ggplot2“ negalite braižyti 3 dimensijų grafikos ir kurti interaktyvios grafikos.
„Ggplot2“ schemą sudaro šie argumentai:
- duomenis
- estetinis žemėlapis
- geometrinis objektas
- statistinės transformacijos
- svarstyklės
- koordinačių sistema
- padėties koregavimas
- briaunotas
Kaip valdyti tuos argumentus, sužinosite pamokoje.
Pagrindinė „ggplot2“ sintaksė yra:
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
Pažiūrėkime, kaip „ggplot“ veikia su „mtcars“ duomenų rinkiniu. Pradėkite braižydami mpg kintamojo ir drat kintamojo sklaidos diagramą.
Pagrindinis sklaidos grafikas
library(ggplot2)ggplot(mtcars, aes(x = drat, y = mpg)) +geom_point()
Kodo paaiškinimas
- Pirmiausia duomenų rinkinį „mtcars“ perduodate „ggplot“.
- Argumento „aes“ () viduje pridedate x ašį ir y ašį.
- „+“ Ženklas reiškia, kad norite, kad R toliau skaitytų kodą. Tai daro kodą lengviau įskaitomą jį sulaužius.
- Geometriniam objektui naudokite geom_point ().
Išvestis:
Sklaidos siužetas su grupėmis
Kartais gali būti įdomu atskirti vertes pagal duomenų grupę (ty faktoriaus lygio duomenis).
ggplot(mtcars, aes(x = mpg, y = drat)) +geom_point(aes(color = factor(gear)))
Kodo paaiškinimas
- „Gees_point“ () viduje esantys „aes“ () valdo grupės spalvą. Grupė turėtų būti veiksnio kintamasis. Taigi, jūs konvertuojate kintamą pavarą į koeficientą.
- Iš viso turite kodo aes (spalva = faktorius (pavara)), kurie keičia taškų spalvą.
Išvestis:
Keisti ašį
Duomenų perskaičiavimas yra didelė duomenų mokslininko darbo dalis. Retais atvejais duomenys yra gražios varpo formos. Vienas iš sprendimų, kaip padaryti jūsų duomenis mažiau jautrius pašaliniams rodikliams, yra jų pakeitimas.
ggplot(mtcars, aes(x = log(mpg), y = log(drat))) +geom_point(aes(color = factor(gear)))
Kodo paaiškinimas
- X ir y kintamuosius transformuojate log () tiesiai į aes () žemėlapį.
Atkreipkite dėmesį, kad gali būti taikoma bet kuri kita transformacija, tokia kaip standartizavimas ar normalizavimas.
Išvestis:
Sklaidos diagrama su pritaikytomis vertėmis
Prie diagramos galite pridėti kitą informacijos lygį. Galite nubrėžti pritaikytą tiesinės regresijos vertę.
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
Kodo paaiškinimas
- diagrama: Jūs saugote savo diagramą kintamajame. Tai naudinga tolesniam naudojimui arba venkite pernelyg sudėtingos kodų eilutės
- Argumentas stat_smooth () valdo išlyginimo metodą
- method = "lm": tiesinė regresija
- col = "# C42126": raudonos linijos spalvos kodas
- se = NETIESA: Nerodykite standartinės klaidos
- dydis = 1: linijos dydis yra 1
Išvestis:
Atkreipkite dėmesį, kad yra kitų lyginimo būdų
- glm
- gam
- löess: numatytoji vertė
- ratlankis
Pridėkite informacijos prie diagramos
Iki šiol grafikuose nepridėjome informacijos. Grafikai turi būti informatyvūs. Skaitytojas turėtų pamatyti duomenų analizės istoriją, tiesiog žiūrėdamas į diagramą, nenurodydamas papildomos dokumentacijos. Taigi grafikams reikia gerų etikečių. Galite pridėti etiketes su „labs“ () funkcija.
Pagrindinė laboratorijos () sintaksė yra:
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")
Pridėti pavadinimą
Viena privaloma papildoma informacija yra pavadinimas.
my_graph +labs(title = "Plot Mile per hours and drat, in log")
Kodo paaiškinimas
- my_graph: Jūs naudojate išsaugotą grafiką. Vengiama perrašyti visus kodus kiekvieną kartą, kai prie diagramos pridedate naujos informacijos.
- Jūs įvyniokite pavadinimą laboratorijoje ().
- Raudonos linijos spalvos kodas
- se = NETIESA: Nerodykite standartinės klaidos
- dydis = 1: linijos dydis yra 1
Išvestis:
Pridėkite pavadinimą su dinaminiu pavadinimu
Dinamiškas pavadinimas yra naudingas norint pridėti tikslesnę informaciją pavadinime.
Galite naudoti pastos () funkciją, norėdami atspausdinti statinį ir dinaminį tekstą. Pagrindinė pastos () sintaksė yra:
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
Pavyzdys:
A <-2010paste("The first year is", A)
Išvestis:
## [1] "The first year is 2010"
B <-2018paste("The first year is", A, "and the last year is", B)
Išvestis:
## [1] "The first year is 2010 and the last year is 2018"
Prie mūsų diagramos galite pridėti dinaminį pavadinimą, būtent mpg vidurkį.
mean_mpg <- mean(mtcars$mpg)my_graph + labs(title = paste("Plot Mile per hours and drat, in log. Average mpg is", mean_mpg))
Kodo paaiškinimas
- Jūs sukuriate mpg vidurkį naudodami vidurkį (mtcars $ mpg), saugomą kintamajame mean_mpg
- Norėdami sukurti dinaminį pavadinimą, pateikiantį vidutinę mpg vertę, naudojate pastą () su mean_mpg
Išvestis:
Pridėti paantraštę
Dvi papildomos detalės gali padaryti jūsų diagramą aiškesnę. Jūs kalbate apie paantraštę ir antraštę. Paantraštė eina tiesiai po pavadinimu. Antraštė gali suteikti informacijos apie tai, kas atliko skaičiavimą, ir duomenų šaltinį.
my_graph +labs(title ="Relation between Mile per hours and drat",subtitle ="Relationship break down by gear class",caption = "Authors own computation")
Kodo paaiškinimas
- Laboratorijos viduje () pridėjote:
- title = "Mylės per valandą ir drato santykis": pridėkite pavadinimą
- subtitle = "Santykiai suskirstyti pagal pavarų klases": pridėti paantraštę
- caption = "Autorių skaičiavimas: pridėkite antraštę
- Kiekvieną naują informaciją atskiriate kableliu,,
- Atminkite, kad sulaužote kodo eilutes. Tai nėra privaloma, ir tai tik padeda lengviau perskaityti kodą
Išvestis:
Pervardykite x ir y ašis
Pats kintamasis duomenų rinkinyje ne visada gali būti aiškus arba pagal susitarimą naudoti _, kai yra keli žodžiai (ty GDP_CAP). Nenorite, kad toks vardas būtų jūsų diagramoje. Svarbu pakeisti pavadinimą arba pridėti daugiau informacijos, pvz., Vienetus.
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")
Kodo paaiškinimas
- Laboratorijos viduje () pridėjote:
- x = "Drato apibrėžimas": pakeiskite x ašies pavadinimą
- y = "mylia per valandas": pakeiskite y ašies pavadinimą
Išvestis:
Valdykite svarstykles
Galite valdyti ašies mastą.
Funkcija seq () yra patogi, kai reikia sukurti skaičių seką. Pagrindinė sintaksė yra:
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`
Pvz., Jei norite sukurti diapazoną nuo 0 iki 12 atlikdami 3 žingsnį, turėsite keturis skaičius: 0 4 8 12
seq(0, 12,4)
Išvestis:
## [1] 0 4 8 12
Galite valdyti x ir y ašių mastelį taip, kaip nurodyta toliau
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")
Kodo paaiškinimas
- Funkcija scale_y_continuous () valdo y ašį
- Funkcija scale_x_continuous () valdo x ašį .
- Parametrų pertraukos valdo ašies padalijimą. Galite rankiniu būdu pridėti skaičiaus seką arba naudoti seq () funkciją:
- seka (1, 3,6, pagal = 0,2): sukurkite šešis skaičius nuo 2,4 iki 3,4 atlikdami 3 žingsnius
- seka (1, 1,6, pagal = 0,1): sukurkite septynis skaičius nuo 1 iki 1,6, atlikdami 1 žingsnį
Išvestis:
Tema
Galiausiai, R leidžia mums pritaikyti skirtingų temų siužetą. Bibliotekoje „ggplot2“ yra aštuonios temos:
- theme_bw ()
- theme_light ()
- theme_classis ()
- theme_linedraw ()
- theme_dark ()
- tema_minimali ()
- tema_pilkai ()
- 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")
Išvestis:
Išsaugoti sklypus
Atlikę visus šiuos veiksmus, atėjo laikas išsaugoti ir bendrinti diagramą. Pridėsite „ggsave“ („Failo PAVADINIMAS“) iškart po to, kai nubraižysite diagramą, ir ji bus saugoma standžiajame diske.
Diagrama išsaugoma darbo kataloge. Norėdami patikrinti darbo katalogą, galite paleisti šį kodą:
directory <-getwd()directory
Nubrėžkime jūsų fantastišką grafiką, išsaugokite jį ir patikrinkite vietą
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")
Išvestis:
ggsave("my_fantastic_plot.png.webp")
Išvestis:
## Saving 5 x 4 in image
Pastaba : Tik pedagoginiams tikslams sukūrėme funkciją, pavadintą open_folder (), kad atidarytumėte katalogų aplanką jums. Jums tiesiog reikia paleisti žemiau esantį kodą ir pamatyti, kur saugomas paveikslėlis. Turėtumėte pamatyti failų pavadinimus 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)
Santrauka
Žemiau esančioje lentelėje galite apibendrinti argumentus, kad sukurtumėte sklaidos diagramą:
Tikslas |
Kodas |
---|---|
Pagrindinis sklaidos grafikas |
ggplot(df, aes(x = x1, y = y)) + geom_point() |
Sklaidos diagrama su spalvų grupe |
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) + stat_smooth(method = "lm") |
Pridėkite pritaikytas vertes |
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) |
Prideti pavadinima |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(title = paste("Hello Guru99")) |
Pridėti paantraštę |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(subtitle = paste("Hello Guru99")) |
Pervardyti x |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(x = "X1") |
Pervardyti y |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(y = "y1") |
Valdykite mastelį |
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) |
Kurkite žurnalus |
ggplot(df, aes(x =log(x1), y = log(y))) + geom_point() |
Tema |
ggplot(df, aes(x = x1, y = y)) + geom_point() + theme_classic() |
Sutaupyti |
ggsave("my_fantastic_plot.png.webp") |