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")
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()`).
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")
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"))
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).
## Warning: Removed 103 rows containing missing values or values outside the scale range
## (`stat_boxplot()`).
Arguments limits =
ļauj arī mainīt secību, kādā parādās līmeņi pie atbilstošās ass (4.6 attēls).
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"))
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"))
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).
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).
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"))
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")
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)
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))
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))
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"))
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))
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))
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).
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).
## 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.
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()
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()
Skalas scale_x_sqrt()
un scale_y_sqrt()
attiecīgi x un y asij veic kvadrātsaknas transformāciju (4.23 attēls).
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()