4. nodaļa. Skalas

Uz x un y ass esošo vērtību, kā arī punktu, līniju, stabiņu krāsu, formu, izmēru utt. vērtību mainīšanai ir jāizmanto speciālas skalu maiņas funkcijus, kuru nosaukumi sastāv no trīs vārdiem. Visām funkcijām pirmais vārds ir scale, otrais vārds parāda, kāda veida skala tā ir - x, y vai attiecīgi krāsu (color), aizpildījuma (fill), līniju veida (linetype), simbolu veida (shape), izmēra (size) vai caurspīdīguma (alpha). Funkcijas nosaukumā trešais vārds norāda kāda veida vērtības ir izmantotas skalas izveidē - nepārtrauktas (continuous) vai diskrētas (discrete), kā arī ir citi papildus veidi, piemēram, manual (vērtības nosaka manuāli), gradient (attiecas uz krāsām un aizpildījumiem).

4.1 scale_x_continuous() un scale_y_continuous()

x un y ass vērtību maiņai, ja tās skaitliskas (nepārtrauktas), izmanto attiecīgi funkcijas scale_x_continuous() un scale_y_continuous(). Izmantojot šīs funkcijas var mainīt asu parakstus (arguments name =), pozīcijas, kurās parādās skaitļi (breaks =) (4.1 attēls).

ggplot(CO2, aes(conc, uptake)) + geom_point() + 
      scale_x_continuous("Koncentrācija", breaks = c(200, 400, 500)) + 
      scale_y_continuous("Uzņemtais apjoms")
Nepārtraukto asu piemērs

4.1 attēls. Nepārtraukto asu piemērs

Ar argumentu limits = ir iespējams mainīt katras ass garumu, bet jāņem vērā, ka gadījumā, ja jaunais garums būs mazāks nekā vērtību amplitūda, tad vērtības ārpus ass garuma tiks izslēgtas no attēla (to parāda arī brīdinājums par izslēgtām vērtībām), ietekmējot attēlojumu (4.2 attēls). Tas īpaši attiecas uz stabiņu attēliem, vai attēliem ar trenda līniju.

ggplot(CO2, aes(conc, uptake)) + geom_point() + 
      scale_x_continuous(limits = c(200,600)) + 
      scale_y_continuous(limits = c(0,50))
## Warning: Removed 48 rows containing missing values or values outside the scale range
## (`geom_point()`).
Izmainītas nepārtrauktās ass piemērs

4.2 attēls. Izmainītas nepārtrauktās ass piemērs

y un x asi ir iespējams arī pārvietot attiecīgi uz labo pusi vai uz augšu, norādot argumentu position = (4.3 attēls).

ggplot(CO2, aes(conc, uptake)) + geom_point() + 
      scale_y_continuous(position = "right") + 
      scale_x_continuous(position = "top")
Pārvietotas x un y asis

4.3 attēls. Pārvietotas x un y asis

Ar argumentu sec.axis = gan x, gan y asij ir iespējams izveidot otro asi, bet tikai ar nosacījumu, ka otrā ass ir tieša pamatass transformāciju (4.4 attēls). Tas nozīmē, ka nevar izveidot otru asi, kas parāda pavisam citas vērtības.

ggplot(CO2, aes(conc, uptake)) + geom_point() + 
      scale_y_continuous(sec.axis = sec_axis(~./100,name = "Otrā y ass"))
Attēls ar otru y asi, kas ir pirmās transformācija

4.4 attēls. Attēls ar otru y asi, kas ir pirmās transformācija

4.2 scale_x_discrete() un scale_y_discrete()

Gadījumos, kad uz x vai y ass attēlotas kategorijas mainīgā vērtības, ir jāizmanto attiecīgi funkcijas scale_x_discrete() un scale_y_discrete(), lai mainītu šo asu izskatu.

Ar argumentu limits = ir iespējams norādīt, kuras tieši vērtības attēlot uz ass (atmest kādu no līmeņiem) (4.5 attēls).

ggplot(mpg, aes(drv,hwy)) + geom_boxplot() +
      scale_x_discrete(limits = c("f","r"))
## Warning: Removed 103 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
Attēls ar kategorijas x asi, kur attēloti tikai daži līmeņi

4.5 attēls. Attēls ar kategorijas x asi, kur attēloti tikai daži līmeņi

Arguments limits = ļauj arī mainīt secību, kādā parādās līmeņi pie atbilstošās ass (4.6 attēls).

ggplot(mpg, aes(drv, hwy)) + geom_boxplot() +
      scale_x_discrete(limits = c("r","4","f"))
Attēls ar kategorijas x asi, kur mainīta līmeņu secība

4.6 attēls. Attēls ar kategorijas x asi, kur mainīta līmeņu secība

Līmeņu nosaukumu maiņai izmanto argumentu labels =, kur jānorāda jaunie līmeņu nosaukumi tādā secībā, kā tie parādās pie atbilstošās ass, vai arī jānorāda vecais un jaunais nosaukums un tad secībai nav nozīmēs (4.7 attēls). Jāņem vērā, ka arguments labels = nemaina līmeņu attēlojuma secību, pat ja mainīta kārtība to nosaukumiem.

ggplot(mpg, aes(drv, hwy)) + geom_boxplot() +
      scale_x_discrete(labels = c("4" = "Četri", "r" = "Pakaļējie", "f" = "Priekšējie"))
Attēls ar kategorijas x asi, kur mainīti līmeņu nosaukumi

4.7 attēls. Attēls ar kategorijas x asi, kur mainīti līmeņu nosaukumi

4.3 scale_color_…() un scale_fill…()

Gadījumos, kad formu (punktu, līniju) krāsa ir atkarīga no kāda mainīgā ar argumentu color =, šo krāsu un izveidoto leģendu mainīšanai ir jāizmanto funkcijas no grupas scale_colur...(). Analoģiski, ja aizpildījuma krāsa ir noteikta ar argumentu fill =, tad jāizmanto funkcijas no grupas scale_fill..()

Krāsu (aizpildījuma) skalas veids ir atkarīgs no mainīgā veida, kas izmantots nosakot krāsu. Ja tas ir diskrēts (kategorijas), tad jāizmanto funkcija scale_color_discrete() vai scale_fill_discrete(), kurā kā citās kategorijas skalās var norādīt nosaukumu, kas parādīsies leģendā (name =), kādā veidā nosaukt līmeņus leģendā (labels =) un kurus līmeņus parādīt attēlā (limits =) (4.8 attēls).

ggplot(mpg, aes(cty, hwy, color = drv)) + geom_point() +
      scale_color_discrete(name = "Piedziņas veids",
                            labels = c("Visi", "Priekšējie", "Pakaļējie"))
Izkliedes attēls ar mainītu leģendas izskatu

4.8 attēls. Izkliedes attēls ar mainītu leģendas izskatu

Pašu krāsu (aizpildījumu) mainīšanai var izmantot vairākas pieejas, piemēram, izmantot funkciju scale_color_hue() vai scale_fill_hue() un mainīt trīs parametru vērtības: l =, h = un c =, kas attiecīgi apzīmē luminance, hues un chroma (4.9 attēls).

ggplot(mpg, aes(cty, hwy, color = drv)) + geom_point() +
      scale_color_hue(h=c(60, 190))
Izkliedes attēls, kurā mainītas krāsu gamma

4.9 attēls. Izkliedes attēls, kurā mainītas krāsu gamma

Gatavu krāsu palešu izmantošanai, jāizmanto funkcija scale_color_brewer() vai scale_fill_brewer(), norādot vēlamo krāsu paleti (palette =) (4.10 attēls).

ggplot(mpg, aes(cty, hwy, color = drv)) + geom_point() +
      scale_color_brewer(palette = "Set2")
Izkliedes attēls ar noteiktu krāsu paleti

4.10 attēls. Izkliedes attēls ar noteiktu krāsu paleti

Pilnīgai kontrolei pār attēla krāsām jāizmanto scale_color_manual() vai scale_fill_manual(), kas ļauj izmantot paša izvēlētas krāsas (arguments values =), rakstot to angliskos nosaukumus vai izmantojot Hex kodus. Krāsu skaitam ir jābūt identiskam, līmeņu skaitam datos (4.11 attēls).

ggplot(mpg, aes(drv, fill = drv)) + geom_bar() +
      scale_fill_manual(values = c("orange", "black", "deepskyblue"))
Stabiņu attēls ar manuāli noteiktām aizpildījuma krāsām

4.11 attēls. Stabiņu attēls ar manuāli noteiktām aizpildījuma krāsām

Ja krāsa vai aizpildījums ir atkarīgs no skaitliska mainīgā, tad to mainīšanai var izmantot, piemēram, funkcijas scale_color_gradient(), scale_color_gradient2() un scale_color_gradientn(), vai to analogus scale_fill_gradient(), scale_fill_gradient2() un scale_fill_gradientn(). Šīs funkcijas attiecīgi noteiks krāsu kā pāreju no zemākā uz augstāko toni, kā pāreju starp divām atšķirīgām krāsām, vai arī kā gradientu no vairāk kā divām krāsām (4.12 attēls).

ggplot(CO2, aes(conc, uptake, color = uptake)) + geom_point() +
      scale_color_gradient(low="white", high = "black")
Izkliedes attēls, kurā krāsa mainās kā gradients

4.12 attēls. Izkliedes attēls, kurā krāsa mainās kā gradients

Norādot divas ļoti atšķirīgas krāsas, veidosies pāreja no vienas krāsas uz otru krāsu ar balto pa vidu. Pēc noklusējuma baltā krāsa atbildīs vērtībām 0, bet, ja nepieciešams cits viduspunkts, tas jānorāda ar argumentu midpoint = (4.13 attēls).

ggplot(CO2, aes(conc, uptake, color = uptake)) + geom_point() +
      scale_color_gradient2(low="red", high = "blue", midpoint = 30)
Izkliedes attēls, kurā krāsa mainās kā gradients no sarkanās uz zilo

4.13 attēls. Izkliedes attēls, kurā krāsa mainās kā gradients no sarkanās uz zilo

4.4 scale_alpha_…()

Ja veidojot attēlu funkcijā aes() ir izmantots arguments alpha =, tad caurspīdīguma vērtību un atbilstošo leģendu mainīšanai izmanto funkcijas scale_alpha_continuous(), scale_alpha_discrete() un scale_alpha_manual(). Visās funkcijās var norādīt leģendas nosaukumu (name =) un līmeņu nosaukumus (labels =). Papildus var norādīt arī argumentu range =, kas nosaka mazāko un lielāko vērtību caurspīdīguma skalai (4.14 attēls).

ggplot(CO2, aes(conc, uptake, alpha = uptake)) + geom_point() +
      scale_alpha_continuous("Caurspīdīgums", breaks = c(8, 16, 24, 32),
                             range = c(0.3, 0.8))
Izkliedes attēls, kurā krāsa mainās kā gradients no sarkanās uz zilo

4.14 attēls. Izkliedes attēls, kurā krāsa mainās kā gradients no sarkanās uz zilo

4.5 scale_linetype_…()

Attēlā izmantoto līniju veida ietekmēšanai izmanto funkcijas scale_linetype_discrete() un scale_linetype_manual(). Ar pirmo funkciju var ietekmēt tikai leģendu un līmeņu nosaukumus, bet manuālā skala ļauj jau definēt konkrētos līniju veidus katram no līmeņiem, tos norādot kā skaitļus no 1 līdz 6, vai to angliskos nosaukumus (4.15 attēls).

ggplot(mpg, aes(cty, hwy, linetype = drv)) + 
      geom_line() + 
      scale_linetype_manual("Līnijas veids",
                            values= c(3, 2, 6))
Līniju attēls ar mainītiem līniju veidiem

4.15 attēls. Līniju attēls ar mainītiem līniju veidiem

4.6 scale_shape_…()

Izkliedes attēlos (punktu attēlos) simbolu maiņai izmanto funkcijas scale_shape_discrete() un scale_shape_manual(). Automātiski var tikt izveidots attēls ar sešiem dažādiem simbolu veidiem. Ja līmeņu daudzums ir lielāks par seši, tad tikai sešiem līmeņiem parādīsies simboli un brīdinājums, kā arī pārējie līmeņi attēlā neparādīsies. Šajā gadījumā obligāti jāizmanto funkcija scale_shape_manual() un jānodefinē savi simbola veidi.

Ar scale_shape_discrete() var definēt leģendas nosaukumu un līmeņu nosaukumus (4.16 attēls).

ggplot(CO2, aes(conc, uptake, shape = Type)) + geom_point() +
      scale_shape_discrete("Tips", labels = c("Pirmais", "Otrais"))
Izkliedes attēls, kurā forma ir atkarīga no kategorijas mainīgā

4.16 attēls. Izkliedes attēls, kurā forma ir atkarīga no kategorijas mainīgā

Funkcijā scale_shape_manual() papildus nāk arguments values =, kas ļauj definēt izmantojamo simbola veidu (4.17 attēls).

ggplot(CO2, aes(conc, uptake, shape = Type)) + geom_point() +
      scale_shape_manual("Tips", labels = c("Pirmais", "Otrais"),
                         values = c(11,23))
Izkliedes attēls ar mainītu simbolu veidu

4.17 attēls. Izkliedes attēls ar mainītu simbolu veidu

4.7 scale_size_…()

Gadījumos, kad kādai formai attēlā mainās lielums atbilstoši argumentam size =, ir jāizmanto kāda no scale_size...() funkcijām. Ar funkciju scale_size() var definēt ne tikai leģendas nosaukumu un dalījuma līmeņus, bet arī ar argumentu range = izmēru robežas kādās pārvērst vērtības (4.18 attēls).

ggplot(CO2, aes(conc, uptake, size = uptake)) + geom_point() +
      scale_size("Izmēri", range = c(2, 8))
Izkliedes attēls, kurā mainās punktu izmērs

4.18 attēls. Izkliedes attēls, kurā mainās punktu izmērs

Ja grib precīzi definēt izmērus tā, ka 0 vērtība atbilst punkta platībai (izmēram) 0, tad ir jāizmanto funkcija scale_size_area() (4.19 attēls).

ggplot(CO2, aes(conc, uptake, size = uptake)) + geom_point() +
      scale_size_area()
Izkliedes attēls, kurā mainās punktu izmērs sākot ar 0 vērtību

4.19 attēls. Izkliedes attēls, kurā mainās punktu izmērs sākot ar 0 vērtību

4.8 Identitātes skalas

Ir vesela grupa skalu funkciju, kuru nosaukumā pēdējais vārds ir identity. Šīs skalas izmanto gadījumos, kad datos ir kolonna, kuras vērtības ir jāizmanto kā reālās attēlojāmā veida iespējamās vērtības, nevis sistēmai pašai jāizdomā attēlojums šim mainīgajam. Piemērs būtu, ka datos ir kolonna ar krāsu nosaukumiem, kurus tiešā veidā ir arī jāattēlo.

Piemēram izveidota datu tabula, kurā ir kolonnas izmers un krasa (ar reāliem krāsu nosaukumiem).

df <- data.frame(x = 1:3,
                 y = 1:3,
                 izmers = 4:6,
                 krasa = c("green","yellow","brown"))
df
##   x y izmers  krasa
## 1 1 1      4  green
## 2 2 2      5 yellow
## 3 3 3      6  brown

Izmantojot piemēra datus izkliedes attēlā un nosakot, ka punktu krāsa ir atkarīga no mainīgā krasa, redzams, ka izveidotajā attēlā un leģendā nosaukumi un krāsas nesakrīt (4.20 attēls), jo ggplot2 sistēma tos uztver kā vienkāršus nosaukumus, nevis reālus krāsu nosaukumus.

ggplot(df, aes(x, y, color = krasa))  + 
      geom_point()
Izkliedes attēls ar mainītu krāsu

4.20 attēls. Izkliedes attēls ar mainītu krāsu

Pievienojot funkciju scale_color_identity() un scale_size_identity(), attēlā punktu izmērs un krāsa ir tāda, kāda tā norādīta datu tabulā, kā arī pēc noklusējuma nerādās leģenda (4.21 attēls).

ggplot(df, aes(x, y, color = krasa, size = izmers))  + 
      geom_point() + 
      scale_color_identity() +
      scale_size_identity()
Izkliedes attēls ar mainītu krāsu

4.21 attēls. Izkliedes attēls ar mainītu krāsu

4.9 Transformāciju skalas

Ir vairākas skalu funkcijas, kas ļauj veikt x un y ass vērtību transformācijas. Tādas ir skalas scale_x_log10() un scale_y_log10(), kas attiecīgi pārvērš x un y asi par logaritmisko asi (4.22 attēls).

ggplot(CO2, aes(conc, uptake, size = uptake)) + geom_point() +
      scale_x_log10(breaks = c(10, 100, 1000), limits = c(10, 1000)) + 
  scale_y_log10()
Izkliedes attēls ar logaritmisko x un y asi

4.22 attēls. Izkliedes attēls ar logaritmisko x un y asi

Skalas scale_x_sqrt() un scale_y_sqrt() attiecīgi x un y asij veic kvadrātsaknas transformāciju (4.23 attēls).

ggplot(CO2, aes(conc, uptake, size = uptake)) + geom_point() +
      scale_x_sqrt() + scale_y_sqrt()
Izkliedes attēls ar x un y asi, kurām piemērota kvadrātsaknes transformācija

4.23 attēls. Izkliedes attēls ar x un y asi, kurām piemērota kvadrātsaknes transformācija

Skalu funkcijas scale_x_reverse() un scale_y_reverse() izmanto, ja attiecīgi x un y asij ir nepieciešams skaitliskās vērtības attēlot pretējā secībā, tas ir, sākot ar lielāko vērtību un beidzot ar mazāko vērtību (4.24 attēls).

ggplot(CO2, aes(conc, uptake, size = uptake)) + geom_point() +
      scale_x_reverse() + scale_y_reverse()
Izkliedes attēls ar reversajām x un y asi

4.24 attēls. Izkliedes attēls ar reversajām x un y asi