Bodový graf v R pomocou ggplot2 (s príkladom)

Obsah:

Anonim

Grafy sú treťou časťou procesu analýzy údajov. Prvá časť je o extrakcii dát , druhá časť sa venuje čisteniu a manipulácii s dátami . Nakoniec bude možno potrebné, aby vedec zaoberajúci sa údajmi svoje výsledky graficky komunikoval .

Úlohu dátového vedca možno preskúmať na nasledujúcom obrázku

  • Prvou úlohou dátového vedca je definovať výskumnú otázku. Táto výskumná otázka závisí od zámerov a zámerov projektu.
  • Potom je jednou z najvýznamnejších úloh inžinierstvo funkcií. Vedec zaoberajúci sa údajmi musí údaje zhromaždiť, manipulovať s nimi a vyčistiť ich
  • Po dokončení tohto kroku môže začať skúmať množinu údajov. Niekedy je potrebné z dôvodu nového objavu spresniť a zmeniť pôvodnú hypotézu.

  • Keď sa dosiahne vysvetľujúca analýza, musí vedec zaoberajúci sa údajmi vziať do úvahy schopnosť čitateľa pochopiť základné pojmy a modely .
  • Jeho výsledky by mali byť prezentované vo formáte, ktorému rozumejú všetky zúčastnené strany. Jednou z najlepších metód na komunikáciu výsledkov je graf .
  • Grafy sú neuveriteľným nástrojom na zjednodušenie zložitej analýzy.

V tomto návode sa naučíte

  • balíček ggplot2
  • Bodový diagram
  • Zmeniť os
  • Bodový graf s prispôsobenými hodnotami
  • Pridajte informácie do grafu
  • Premenujte os x a os y
  • Ovládajte váhy
  • Téma
  • Uložiť pozemky

balíček ggplot2

Táto časť tutoriálu sa zameriava na to, ako vytvárať grafy / tabuľky s R.

V tomto výučbe budete používať balík ggplot2. Tento balík je postavený na konzistentnom základe knihy Gramatika grafiky, ktorú napísal Wilkinson, 2005. ggplot2 je veľmi flexibilný, obsahuje veľa tém a špecifikáciu deja na vysokej úrovni abstrakcie. Pomocou ggplot2 nemôžete vykresľovať trojrozmernú grafiku a vytvárať interaktívne grafiky.

V ggplot2 sa graf skladá z nasledujúcich argumentov:

  • údaje
  • estetické mapovanie
  • geometrický objekt
  • štatistické transformácie
  • váhy
  • súradnicový systém
  • úpravy polohy
  • fazetovanie

Ako ovládať tieto argumenty sa dozviete v tutoriále.

Základná syntax 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()`

Bodový diagram

Pozrime sa, ako ggplot pracuje s množinou údajov mtcars. Začnete vykreslením bodového grafu premenných mpg a drat.

Základný bodový graf

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

Vysvetlenie kódu

  • Najprv odovzdáte dátovú množinu mtcars do ggplot.
  • Do argumentu aes () pridáte osi x a y.
  • Znamienko + znamená, že chcete, aby kód R naďalej čítal. Zvyšuje čitateľnosť kódu jeho rozbitím.
  • Použite geom_point () pre geometrický objekt.

Výkon:

Bodový graf so skupinami

Niekedy môže byť zaujímavé rozlíšiť hodnoty podľa skupiny údajov (tj. Údaje na úrovni faktora).

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

Vysvetlenie kódu

  • Aes () vo vnútri geom_point () riadi farbu skupiny. Skupina by mala byť premennou faktora. Takto preradíte variabilný prevodový stupeň.
  • Celkovo máte kód aes (color = factor (gear)), ktorý mení farbu bodiek.

Výkon:

Zmeniť os

Zmena mierky údajov je veľkou časťou práce dátového vedca. V ojedinelých prípadoch majú dáta pekný tvar zvona. Jedným z riešení na zníženie citlivosti vašich údajov na odľahlé hodnoty je ich zmena mierky.

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

Vysvetlenie kódu

  • Premenné x a y transformujete v log () priamo vo vnútri mapovania aes ().

Upozorňujeme, že je možné použiť akúkoľvek inú transformáciu, napríklad štandardizáciu alebo normalizáciu.

Výkon:

Bodový graf s prispôsobenými hodnotami

Do grafu môžete pridať ďalšiu úroveň informácií. Môžete vykresliť prispôsobenú hodnotu lineárnej regresie.

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

Vysvetlenie kódu

  • graf: Uložíte svoj graf do premenného grafu. Je užitočné ho ďalej používať alebo sa vyhnúť príliš zložitému riadku kódov
  • Argument stat_smooth () riadi metódu vyhladzovania
  • method = "lm": Lineárna regresia
  • col = "# C42126": Kód červenej farby čiary
  • se = FALSE: Nezobrazovať štandardnú chybu
  • size = 1: veľkosť riadku je 1

Výkon:

Upozorňujeme, že sú k dispozícii aj ďalšie spôsoby vyhladzovania

  • glm
  • gam
  • spraše: predvolená hodnota
  • ráfik

Pridajte informácie do grafu

Doteraz sme do grafov nepridávali informácie. Grafy musia byť informatívne. Čitateľ by mal vidieť príbeh za analýzou dát už len pri pohľade na graf bez odkazovania na ďalšiu dokumentáciu. Grafy preto potrebujú dobré štítky. Môžete pridať štítky s funkciou labs ().

Základná syntax pre 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")

Pridajte nadpis

Jednou z povinných informácií, ktoré je potrebné pridať, je zjavne názov.

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

Vysvetlenie kódu

  • my_graph: Používaš uložený graf. Zabráni prepisovaniu všetkých kódov zakaždým, keď do grafu pridáte nové informácie.
  • Titul zabalíte do laboratória ().
  • Kód červenej farby čiary
  • se = FALSE: Nezobrazovať štandardnú chybu
  • size = 1: veľkosť riadku je 1

Výkon:

Pridajte názov s dynamickým názvom

Dynamický názov pomáha pridať do názvu presnejšie informácie.

Na tlač statického a dynamického textu môžete použiť funkciu paste (). Základná syntax 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

Príklad:

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

Výkon:

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

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

Výkon:

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

Do nášho grafu môžete pridať dynamický názov, a to priemer mpg.

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

Vysvetlenie kódu

  • Vytvoríte priemer mpg s priemerom (mtcars $ mpg) uloženým v premennej mean_mpg
  • Pomocou paste () s mean_mpg vytvoríte dynamický nadpis, ktorý vráti strednú hodnotu mpg

Výkon:

Pridajte podtitul

Vďaka dvom ďalším podrobnostiam môže byť váš graf explicitnejší. Hovoríte o podnadpise a titulku. Podnadpis ide priamo pod nadpis. Titulky môžu informovať o tom, kto vykonal výpočet, a zdroji údajov.

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

Vysvetlenie kódu

  • Do laboratória () ste pridali:
    • title = "Vzťah medzi míľami za hodinu a bratom": Pridajte názov
    • subtitle = "Rozdelenie vzťahov podľa triedy prevodových stupňov": Pridať titulky
    • caption = "Vlastný výpočet autorov: Pridajte titulok
    • Každú novú informáciu oddelíte čiarkou,,
  • Upozorňujeme, že porušujete riadky kódu. Nie je to povinné a iba to pomôže ľahšie načítať kód

Výkon:

Premenujte os x a os y

Samotné premenné v množine údajov nemusia byť vždy explicitné alebo podľa konvencie použite znak _, ak existuje viac slov (napr. GDP_CAP). Nechcete, aby sa takéto meno objavilo vo vašom grafe. Je dôležité zmeniť názov alebo pridať ďalšie podrobnosti, napríklad jednotky.

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

Vysvetlenie kódu

  • Do laboratória () ste pridali:
    • x = "Drat definition": Zmeňte názov osi x
    • y = "Míľa za hodinu": Zmeňte názov osi y

Výkon:

Ovládajte váhy

Môžete ovládať mierku osi.

Funkcia seq () je vhodná, keď potrebujete vytvoriť postupnosť čísel. Základná syntax 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`

Napríklad, ak chcete vytvoriť rozsah od 0 do 12 s krokom 3, budete mať štyri čísla, 0 4 8 12

seq(0, 12,4)

Výkon:

## [1] 0 4 8 12 

Mierku osi x a osi y môžete ovládať nižšie

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

Vysvetlenie kódu

  • Funkcia scale_y_continuous () riadi os y
  • Funkcia scale_x_continuous () riadi os x .
  • Konce parametrov riadia rozdelenie osi. Poradie čísel môžete pridať manuálne alebo použiť funkciu seq ():
    • seq (1, 3,6, o = 0,2): Vytvorte šesť čísel od 2,4 do 3,4 s krokom 3
    • seq (1, 1,6, o = 0,1): Vytvorte sedem čísel od 1 do 1,6 s krokom 1

Výkon:

Téma

Nakoniec nám R umožňuje prispôsobiť sprisahanie s rôznymi témami. Knižnica ggplot2 obsahuje osem tém:

  • theme_bw ()
  • theme_light ()
  • theme_classis ()
  • theme_linedraw ()
  • theme_dark ()
  • téma_minimálne ()
  • 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")

Výkon:

Uložiť pozemky

Po všetkých týchto krokoch je čas uložiť a zdieľať svoj graf. Hneď po vykreslení grafu pridáte ggsave ('NÁZOV SÚBORU) a uloží sa na pevný disk.

Graf je uložený v pracovnom adresári. Ak chcete skontrolovať pracovný adresár, môžete spustiť tento kód:

directory <-getwd()directory 

Poďme nakresliť váš fantastický graf, uložíme ho a skontrolujeme polohu

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

Výkon:

ggsave("my_fantastic_plot.png.webp")

Výkon:

## Saving 5 x 4 in image

Poznámka : Len na pedagogické účely sme vytvorili funkciu nazvanú open_folder (), aby sme vám otvorili priečinok adresára. Musíte len spustiť kód uvedený nižšie a zistiť, kde je obrázok uložený. Mali by ste vidieť názvy súborov 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)

Zhrnutie

Argumenty na vytvorenie bodového grafu môžete zhrnúť v nasledujúcej tabuľke:

Cieľ

Zákonníka

Základný bodový graf

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

Bodový graf s farebnou skupinou

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

Pridajte prispôsobené hodnoty

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

Pridať názov

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

Pridajte podnadpis

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

Premenovať x

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

Premenujte y

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

Ovládajte mierku

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)

Vytvorte denníky

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

Téma

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

Uložiť

ggsave("my_fantastic_plot.png.webp")