18 Jednostavne vizualizacije

Osnovna naredba za crtanje grafova u R-u je plot(). Naredba će rezultirati različitim prikazom ovisno o tome što se crta. Na primjer, ako želimo nacrtati ranije kreirani vektor a, onda će to izgledati ovako:

plot(a)

Na x-osi naći će se redni broj opažanja, a na y-osi bit će vrijednosti opažanja. Bez dodatnih parametara, ovo je vrlo neinformativan graf.

No, ako bismo grafički prikazali broj dolazaka i odlazaka turista iz promatranih EU zemalja (podatkovni okvir Tur_eu), onda dobivamo dijagram rasipanja. Dodatno, specificiran je naslov koristeći parametar main te nazivi apscise (koristeći xlab) i ordinate (koristeći ylab).

plot(Tur_eu[,2:3],
     main="Dolasci i odlasci turista iz promatranih EU zemalja",
     xlab = "Broj dolazaka turista",
     ylab = "Broj odlazaka turista")

Osim toga, plot() se može koristiti za kreiranje linijskog dijagrama:

y <- cumsum(a)

plot(a, y, type = "l", main = "Linijski dijagram", xlab = "vektor a", ylab = "Kumulativni niz")

Nadalje, moguće je kreiranje stupčastog dijagrama koristeći barplot() naredbu. U ranijim primjerima nisu korištene izmjene u bojama, ali se mogu provesti na isti način i to podešavanjem parametra col.

counts <- table(Tur_ord$EU)

# Kreiranje stupčastog dijagrama
barplot(counts, main = "Stupčasti dijagram: promatrane države prema članstvu u EU", xlab = "Države članice EU", ylab = "Frekvencije", col = "lightgreen")

Na sličan način moguće je kreirati i strukturni krug, poznatiji kao torta dijagram.

pie(counts, labels = c("not EU", "EU"), main = "Strukturni krug: promatrane države prema članstvu u EU", col = c("lightblue", "yellow"))

Jedan od najčešće korištenih grafičkih prikaza svakako je histogram. Prikazat ćemo histogram ranije kreiranog vektora norm. Hist ima više različitih parametara koji se mogu definirati, a između ostalih i pravilo prema kojem se definiraju razredi.

hist(norm)

Osnovna postavka je korištenje Sturgesovog pravila pri kreiranju razreda, no granice razreda se mogu zadati u obliku vektora.

razredi <- seq(39,75,6)

hist(norm, 
     breaks = razredi,                #granice razreda
     main = "Histogram vektora norm", #promjena naziva grafa
     xlim = c(30,80),                 #promjena raspona apscise
     xlab = "Vektor norm",            #promjena naziva apscise
     ylim = c(0,50),                  #promjena raspona ordinate
     ylab = "Frekvencije",            #promjena naziva ordinate
     col = "purple"                   #promjena boje površine histograma
     )

Evo jednog primjera s jako puno podešenih parametara pri crtanju histograma.

data <- rnorm(1000, mean = 50, sd = 10)

# Stvaranje prilagođenog histograma
hist(data, 
     breaks = 30,                    # Broj stupaca
     col = "steelblue",              # Boja stupaca
     border = "white",               # Boja ruba stupaca
     main = "Prilagođeni histogram", # Naslov histograma
     xlab = "Vrijednosti",           # Oznaka za x-os
     ylab = "Frekvencija",           # Oznaka za y-os
     xlim = c(20, 80),               # Granica za x-os
     ylim = c(0, 100),               # Granica za y-os
     las = 1,                        # Orjentacija oznaka osi
     cex.axis = 0.8,                 # Veličina oznaka osi
     cex.lab = 1.1,                  # Veličina naslova osi
     cex.main = 1.3,                 # Veličina glavnog naslova
     cex.sub = 0.8,                  # Veličina podnaslova
     sub = "Normalna Distribucija",  # Podnaslov
     xaxt = "n")                     # Sakriti oznake x-osi

# Dodavanje prilagođenih oznaka x-osi
axis(1, at = seq(20, 80, by = 10), labels = seq(20, 80, by = 10))

# Dodavanje prilagođene mreže
grid(nx = NULL, ny = NULL, col = "gray", lty = "dotted")

Nadalje, za vizualno preispitivanje i stvaranje procjene funkcije gustoće vjerojatnosti za kontinuirani skup podataka koristi se density() u kombinaciji s naredbom plot().

dens <-density(norm)
plot(dens, col = "red", lwd = 2)

Nešto opsežnije mogućnosti grafičkih prikaza s više prilagođenih postavki mogu se ostvariti koristeći paket ggplot2 [9]. Ovdje je prikazan primjer u kojem se pomoću ggplot2 kreiraju slojevi grafičkog prikaza, uključujući histogram s prilagođenom bojom, širinom stupa i prozirnosti te krivulju gustoće s prilagođenom bojom i debljinom linije.

library(ggplot2)
norm<-as.data.frame(norm)
ggplot(norm, aes(x = norm)) + 
  geom_histogram(aes(y = after_stat(density)), binwidth = 1, fill = "blue", alpha = 0.5) + 
  geom_density(color = "red", linewidth = 1)

Nakon toga, prelazimo na grafički prikaz histograma i krivulje gustoće s većom količinom podešenih parametara. Objašnjenja za podešene parametre unesena su u kodu.

options(digits = 2)          # postavljanje broja znamenki u ispisu (u ovom slučaju, u ispisu brojeva na osima)

# Kreiranje histograma s linijom gustoće koristeći ggplot2 s prilagodbama
ggplot(norm, aes(x = norm)) +
  # Dodavanje histograma
  geom_histogram(aes(y = after_stat(density)), # dodavanje histograma
                 binwidth = 1,                # crtanje histograma sa širinom stupca podešenom na 1
                 fill = "green",               # ispuna histograma
                 alpha = 0.5,                 # parametar koji kontrolira prozirnost elemenata na grafikonu
                 color = "black") +           # boja obruba
  # Dodavanje linije gustoće
  geom_density(color = "purple", size = 1.5) +   # dodavanje linije gustoće, boja i debljina linije
  # Prilagodba naslova i oznaka osi
  labs(title = "Histogram i linija gustoće",  # naslov
       subtitle = "Normalna distribucija - Joker style",    # podnaslov
       x = "Vrijednosti",                     # naziv apscise
       y = "Gustoća") +                       # naziv ordinate
  scale_x_continuous(breaks = seq(min(norm), max(norm), by = 2)) +  # prilagodba oznaka na osima
  # Prilagodba tema
  theme_minimal() +
  # Prilagodba elemenata tema
  theme(
    plot.title = element_text(size = 20, face = "bold", hjust = 0.5),
    plot.subtitle = element_text(size = 15),
    axis.title.x = element_text(size = 14),
    axis.title.y = element_text(size = 14),
    axis.text = element_text(size = 12)
  )
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Osim navedenih, mozaik grafikon (mosaic plot) je vizualni prikaz koji se koristi za prikazivanje podataka iz kombiniranih tablica (tablica kontingence). Za prikaz opisnih podataka ciljano je kreiran paket vcd [20].

#install.packages("vcd")
library(vcd)
## Loading required package: grid
# Primjer kontingencijske tablice
data(HairEyeColor)                # učitavanje postojećih podataka iz paketa vcd
tablica <- margin.table(HairEyeColor, margin = c(1, 2))

# Kreiranje mozaik grafikona
mosaicplot(tablica, main = "Mozaik grafikon boja kose i očiju", 
           xlab = "Boja kose", ylab = "Boja očiju")

I u ovom se grafikonu mogu dodatno prilagođavati boje.

boje <- c("brown", "lightblue", "orange", "darkgreen")

mosaicplot(tablica, main = "Mozaik grafikon boja kose i očiju", 
           xlab = "Boja kose", ylab = "Boja očiju",
           color = boje)

18.1 Prednosti i nedostaci vizualizacija u R-u te najčešće pogreške

Prednosti vizualizacije podataka u R-u

  • Raznolikost tipova grafova: R podržava širok spektar tipova grafova i vizualizacija, omogućavajući prilagodbu prikaza podacima i analitičkim ciljevima,

  • fleksibilnost i prilagodba: napredne opcije za prilagodbu omogućuju precizno podešavanje izgleda grafova, od boja i tipova linija do složenih rasporeda i integracija s drugim elementima kao što su tekst i elementi oblikovanja,

  • integracija s analitičkim radnim tokovima: vizualizacije se lako integriraju s ostatkom analitičkog procesa u R-u, omogućavajući brzu iteraciju između analize i vizualizacije.

Uobičajene greške pri kreiranju vizualizacija

  • Previše detalja ili složenih elemenata može dovesti do konfuznih grafova koji otežavaju razumijevanje podataka,

  • Zanemarivanje ciljne publike: vizualizacije koje nisu prilagođene razumijevanju i potrebama ciljne publike mogu rezultirati neučinkovitom komunikacijom,

  • Neadekvatna priprema podataka, odnosno greške u pripremi podataka, kao što su neobrađene iznimke ili nepravilno skaliranje, mogu dovesti do netočnih vizualizacija ili vizualizacija koje mogu biti pogrešno protumačene.

Najbolje prakse za kreiranje vizualizacija

  • Jednostavnost (usmjerenost na ključne elemente koji komuniciraju podatke),

  • Kontrast i boja (poboljšanje čitljivosti),

  • Preglednost i pristupačnost (grafovi razumljivi širokom rasponu korisnika).

Isprobajte različite tipove grafova

Različiti skupovi podataka i analitički ciljevi zahtijevaju različite pristupe vizualizaciji. Eksperimentiranje s različitim tipovima grafova može otkriti učinkovitije načine prikaza podataka.

Upotreba paketa za vizualizaciju poput ggplot2

Paket ggplot2 nudi moćan i fleksibilan sustav za kreiranje kompleksnih vizualizacija podataka s gramatikom grafičkog dizajna. Iskoristite njegove napredne mogućnosti za stvaranje visokokvalitetnih grafova.

Literatura

[9]
H. Wickham and H. Wickham, “Getting Started with ggplot2,” ggplot2: Elegant graphics for data analysis, pp. 11–31, 2016.
[20]
D. Meyer, A. Zeileis, K. Hornik, F. Gerbert, and M. Friendly, “Vcd: Visualizing Categorical Data.” Jan. 2023. Available: https://cran.r-project.org/web/packages/vcd/index.html