7  Joonised

Andmete esitamine ilmekate joonistena võib tundunda lihtsakoelisena. Siiski on enamikes olukodades andmete visualiseerimine kasulikum kui nende esitamine mahuka teksti või keerukate tabelitena. Andmete visualiseerimine on teabe esitamine graafilisel kujul ja sellel on eelnevalt nimetatu ees mitu eelist (Saltz & Stanton, 2017):

7.1 Joonistamise põhimõtted

Andmete vormistamisel joonistena võiks enamasti järgida alljärgnevaid soovitusi.

  • Lisa joonisele nii vähe kui on võimalk ja nii palju kui on vajalik.
  • Too esile see, mis on kõige olulisem.
  • Esita kas mingi üldine muster või too välja pisiasjad, aga mitte mõlemaid korraga.
  • Veendu, et telgede ulatus ega väärtuste teisendused ei kallutaks seda, mida andmed tegelikult näitavad.
  • Mitme joonise kõrvutamisel veendu, et telgede ulatused on samad.
  • Kujuta andmepunktid või muud joonise osised läbipaistvatena, et vältida kattuvusel tekkivat teabekadu.
  • Ühenda andmepunktid joontega ainult siis, kui nende järjestusel on mingi tähendus. Nt aegridade korral on näitab joon muutumist ajas.
  • Värvid peaksid olema seotud kujutatavate väärtuste tähendusega.

Värvide valikul on mitu põhimõtet, aga muuhulgas on oluline lähtuda tunnuse liigist ja väärtuste tähendusest (vt Crameri et al. (2020)). Üldiselt tuleks jälgida, et

  • kõik värvid oleksid sama tugevusega (nt kollane on teistest värvidest heledam),
  • järjestuse korral peaks värvide järjestus olema loogiline,
  • keskmine väärtus peaks olema selgelt neutraalse värviga eristatud,
  • nähtuste vastandamise korral peaks ka värviskaala olema vastanduv.

Sageli viidatakse ka viiele omadusele, mis iseloomustavad head joonist (Cairo, 2016):

  • tõene (põhineb uurimustööl),
  • kasulik (rakendatav mingil eesmärgil),
  • ilus (kutsub vaatama),
  • avav (võimaldab näha midagi teisest küljest),
  • selgitav (pakub uusi teadmisi).

7.2 Jooniste liigid

Võimalikke viise jooniste vormistamiseks on lugematul hulgal. Üldiselt võib neid jooniseid eristada aga nelja omaduse alusel:

  • eesmärk (vt allpool),
  • mõõtmistase (kvantitatiivsed või kvalitatiivsed tunnused),
  • mõõtmed (telgede arv),
  • andmete kuju (praktikas tähtsusetu).

Kõige otstarbekam on joonise vormistuse valimisel lähtuda andmete visualiseerimise eesmärgist, milleks võib olla kujutada

  • võrdlust (nt tulp-, punktjoonis),
  • koostist (nt ring-, pindala-, puujoonis),
  • vooge (Sankey joonis),
  • muutust (joon),
  • seost (nt hajumisjoonis, seosekaart),
  • jaotust (nt histogramm, tihedus-, karpjoonis),
  • ruumilist jaotust (punkt-, koropleetkaart),
  • võrgustikku (võrgustikjoonis).

Enamus liike jooniseid võimaldavad visualiseerida ainult kvantitatiivselt mõõdetud ehk arvtunnuseid. Kvalitatiivseid tunnuseid saab joonistele lisada kas

  • ühele telgedest,
  • tekitades iga kvalitatiivse tunnuse väärtuse jaoks eraldi joonise,
  • kujundades vastavalt tunnuse väärtustele joonise osiseid, nt punktide suurust, kuju või värvi.

7.3 Joonised R keeles

Alljärgnevates näidetes joonistamise näitlikustamieks võrdleme maailma riike.

library('magrittr') # Laadime laienduse toru kasutamiseks
riigid <- read.csv('andmed/countries.csv')
names(riigid) %<>% strsplit('\\.') %>% sapply(`[`, 1) # Jätame veerunimetustes alles vaid enne punkti oleva

R keeles saab tekitada lihtsaid jooniseid nagu punkt- ja ringjoonis nt sageduste kujutamiseks.

table(riigid$region) %>% barplot

table(riigid$region) %>% pie

Samuti tuleb R keelega kaasa mitu funktsiooni väärtuste hajumise kujutamiseks, sh histogramm ning hajumis- ja karpjoonis. Need funktsioonid ei nõua eriti palju tähemärke, mistõttu on neid mugav kasutada andmete uurimiseks.

hist(riigid$arable)

plot(gdp ~ phones, riigid)

boxplot(gdp ~ region, riigid)

Eelnevad R keelega kaasas olevad funktsioonid on mõnevõrra piiratud ja igasuguste osiste muutmine joonistel on enamasti keerukas ja kohmakas. Seetõttu on kujunenud tavapäraseks, et joonised tekitatakse R keeles hoopis laienduses ggplot2 olevate funktsioonidega. Need pakuvad andmete joonistamiseks peaaegu piiramatult võimalusi.

Nt on ggplot2 kasutades lihtne kujutada korraga joonisel mitut tunnust.

library('ggplot2')
ggplot(riigid) + 
  aes(x = gdp, y = phones, size = population, color = literacy) + 
  geom_point() + 
  facet_wrap(~region) + 
  theme_light()
Warning: Removed 4 rows containing missing values (`geom_point()`).

Andmeid saab kujutada väga erinevat liiki joonistel, kuvada jooniseid üksteise peal ja muuta kõiki joonise osiseid.

library('ggplot2')
ggplot(riigid) + 
  aes(x = region, y = agriculture*100, color = arable) + 
  coord_flip() + 
  ylim(c(0,100)) +
  geom_boxplot() + 
  geom_jitter(aes(size = population/1e6)) + 
  labs(title = "Põllumajandus", 
       subtitle = "Hõive põllumajanduses erineb piirkonniti ja riigiti märkimisväärselt", 
       x = "Piirkond", y = "Hõive põllumajanduses, %", 
       size = "Rahvaarv, mln", 
       color = "Põllumajandusmaa\nosakaal, %") + 
  scale_color_gradient(low = 'steelblue', high = 'tomato') + 
  theme_light()
Warning: Removed 15 rows containing non-finite values (`stat_boxplot()`).
Warning: The following aesthetics were dropped during statistical transformation: colour
ℹ This can happen when ggplot fails to infer the correct grouping structure in
  the data.
ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
  variable into a factor?
Warning: Removed 15 rows containing missing values (`geom_point()`).

Laienduse ggplot2 kasutamise kohta on internetis hulgaliselt selgitusi ja näiteid. Nt võib selle abil joonistamisel võtta kõrvale juhendi.