Base graphics

A base graphics az R legrégebbi ábrázolási rendszere. Alapvetően statikus ábrák készítésére alkalmas, és igen apró részletekig paraméterezhető.

A base graphics ábrázolási modellje a "festő modellt" (paint model) követi, azaz az ábrakészítés lépései többnyire a következők:

  1. A "vászon" (canvas) előkészítése és valamilyen magas szintű ábrázoló rutin segítségével a fő ábra elkészítése.
  2. Az ábra kiegészítése kiegészítő pontokkal, vonalakkal, szöveggel stb., amely alacsonyabb szintű rutinok meghívásával történik.
  3. Az egyes lépések során (a vászon felosztásától kezdve a tengely-feliratok formázásáig) szinte minden elem megjelenését egyedileg kontrollálhatjuk.

A base graphics fő függvénye a plot és a paraméterek beállítására szolgáló par. A plot függvény valójában egy generikus függvény, rendkívül sok specifikus metódussal (lásd methods(plot)). Alapesetben a plot.default metódust hívjuk meg. Külön függvények léteznek hisztogramok (hist), boxplotok (boxplot), oszlopdiagramok (barplot), vonalábrák (matplot), színkódolt felület-ábrák (image) stb. megjelenítésére. Alacsonyabb szintű függvényekkel pontokat (points), vonalakat (abline, lines, segments), alakzatokat (polygon), szöveget (text, mtext), ábramagyarázatot (legend) stb. adhatunk az ábrához.

A következőkben bemutatunk néhány gyakran használt ábratípust. A base graphics valamennyi ábrázoló függvényének megtekintéséhez írd be ezt a sort a konzolba: library(help = "graphics"). Nagyon ajánlott elolvasni a hivatalos R-es bevezető dokumentum vonatkozó részét is (lásd pl. itt).

Scatterplot

  • töltsük be a diszlexiás adatainkat (ezek már olyan adatok, amelyekben a változók típusát megfelelően beállítottuk)
data(dyslex)
  • ábrázoljuk az x tengelyen az életkort, az y tengelyen a helyesen olvasott szavak számát
# alap megadasi mod
plot(dyslex$kor, dyslex$olv_helyes1)

plot of chunk unnamed-chunk-2

# a with() fuggvenyt hasznalva, kulon szinnel jelolve a ket csoportot, es
# megvaltoztatva a pontok alakjat
with(dyslex,
     plot(kor, olv_helyes1, col = csoport, pch = 16))

# tegyunk hozza abramagyarazatot
legend("right", legend = levels(dyslex$csoport),
       col = c("black", "red"), pch = 16)

plot of chunk unnamed-chunk-2

  • ahogyan a modellezés során, a plot függvénynél is használhatjuk a formula interfészt; a formula általános alakja: függő változó ~ magyarázó változó
  • bolondítsuk meg az egészet azzal, hogy felosztjuk a vászont két részre, és tegyünk egymás mellé egy-egy ábrát a kor & olv_helyes1, illetve a kor & olv_helyes2 változók összefüggéséről
# a par() függvény 'mfrow' argumentumának megadjuk, hogy 1 sorra és 2 
# oszlopra ossza fel az ábrázolási területet
par(mfrow = c(1, 2))

# elso mezo feltoltese egy abraval, formula-t hasznalva
plot(olv_helyes1 ~ kor, data = dyslex)

# masodik mezo feltoltese egy abraval, formula-t hasznalva
plot(olv_helyes2 ~ kor, data = dyslex)

plot of chunk unnamed-chunk-3

Boxplot

A box & whisker ábra nagyon jó és robusztus módszer arra, hogy ábrázoljuk egy folytonos változó eloszlását egy csoportosító változó függvényében.

  • ábrázoljuk az olv_helyes1 változó eloszlását a csoport (kontroll/sni) függvényében
# notch-ot is tegyunk ra, lasd ?boxplot
boxplot(olv_helyes1 ~ csoport, data = dyslex, notch = TRUE)

# huzzunk egy vizszintes vonalat az olv_helyes2 medianjanak megfeleloen
abline(h = median(dyslex$olv_helyes2), col = "grey")

plot of chunk unnamed-chunk-4

  • ábrázoljuk a figyelemzavar változó eloszlását a csoport (kontroll/sni) függvényében, azonosítsuk az outlier-t
# a plot() automatikusan a boxplot()-ot jelenti, ha az x valtozo faktor!
plot(figyzavar ~ csoport, data = dyslex, notch = TRUE)
with(dyslex, identify(csoport, figyzavar))

plot of chunk unnamed-chunk-5

## integer(0)
dyslex[25, ]
##     id nem  csoport oszt kor figyzavar szokincs olv_helyes1 olv_helyes2
## 25 s25 fiu kontroll    3 114        84       42          19          25
##    olv_helyes3 sp_helyes1 sp_helyes2 sp_helyes3 sp_helyes4 sp_helyes5
## 25          24         24         15         15         14         16
##    figy_csop olvasas helyesiras
## 25      adhd      68         84

Ábra mentése külső fájlba

Valójában a grafikai eszköz, amely az ábrát megjeleníti, nem csak a képernyődön megnyíló ablak (vagy RStudio-nal a Plots window) lehet. Szabadon megválaszthatod, hogy az ábrát milyen eszközön akarod elkészíteni, lásd: ?device. Például készítsünk egy pdf-et a korábbi boxplot-os ábrából:

# ha az ű és í nem jol jelenne meg, az alábbi paranccsal kikuszobolheted
pdf.options(encoding = "CP1250")

# nyitunk egy pdf grafikai eszközt, megadjuk a fajl nevet, az abra meretet
pdf(file = "temp.pdf", width = 7, height = 7)

# elkeszitjuk az abrat
plot(figyzavar ~ csoport, data = dyslex, notch = TRUE)

# bezarjuk az eszkozt
dev.off()

Ezek után a kérdéses fájl (temp.pdf) ott pihen a munkakönyvtáradban.

(Az RStudio Plots nevet viselő ablakában lehetőséged van arra, hogy az aktuális ábrát akár valamilyen bitmap, akár pdf formátumba exportáld. Ez sajnos nem mindig működik tökéletesen, illetve humán interakciót igényel, így például szkripteket futtatva nem használható.)

Base graphics ábrák a különböző csomagokban

Nagyon valószínű, hogy valaki már megírta az a plottoló rutint, amelyet használni szeretnél, így érdemes először keresni, és csak utána feltalálni a kereket.

Sajnos egy ideje nem frissül, de ezen a linken találhatsz egy egész mutatós kollekciót R-ábrákból.

Explorációs ábrázolásokra (különösen regressziós elemzések előtt) kiválóan alkalmas például a psych csomag pairs.panels függvénye:

library(psych)
pairs.panels(
    dyslex[, c("szokincs", "olv_helyes1", "olv_helyes2", "olv_helyes3")])

plot of chunk unnamed-chunk-9