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 (Wickham and Wickham 2016). 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)
## Warning: package 'ggplot2' was built under R version 4.3.3
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.

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

# Kreiranje histograma s linijom gustoće koristeći ggplot2 s prilagodbama
ggplot(norm, aes(x = norm)) +
  # Dodavanje histograma
  # dodavanje histograma
  geom_histogram(aes(y = after_stat(density)), 
                 # crtanje histograma sa širinom stupca podešenom na 1
                 binwidth = 1,          
                 # ispuna histograma
                 fill = "green",  
                 # parametar koji kontrolira prozirnost elemenata na grafikonu
                 alpha = 0.5,    
                 # boja obruba
                 color = "black") +           
  # Dodavanje linije gustoće
  # dodavanje linije gustoće, boja i debljina linije
  geom_density(color = "purple", size = 1.5) +   
  # Prilagodba naslova i oznaka osi
  # naslov
  labs(title = "Histogram i linija gustoće",
       # podnaslov
       subtitle = "Normalna distribucija - Joker style",  
       # naziv apscise
       x = "Vrijednosti",        
       # naziv ordinate
       y = "Gustoća") +         
  # prilagodba oznaka na osima
  scale_x_continuous(breaks = seq(min(norm), max(norm), by = 2)) +  
  # 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 (Meyer et al. 2023).

#install.packages("vcd")
library(vcd)
## Loading required package: grid
# Primjer tablice kontingence

# učitavanje postojećih podataka iz paketa vcd
data(HairEyeColor)                
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.