3. nodaļa. Formas
ggplot2 sistēmā ir iespējams vienus un tos pašus datus attēlot dažādos veidos, izvēloties atbilstošo datu attēlošanas formu jeb geom_...()
. Vairumā gadījumu ir jānorāda x un y vērtības, bet atsevišķos gadījumos ir nepieciešami arī papildus mainīgie, vai arī nepieciešamas tikai x vērtības (piemēram, histogrammai).
3.1 geom_point()
Ar geom_point()
ir iespējams veidot izkliedes attēlus (scatterplot) (3.1 attēls).
Punktiem ir iespējams mainīt krāsu (color =
), formu (shape =
), lielumu (size =
) un caurspīdīgumu (alpha =
). Mainot šos parametrus ir jānolemj pēc kādiem principiem tas notiks - parametrs būs vienāds visiem punktiem, vai arī tas mainīsies atkarībā no kāda cita mainīgā datos.
Ja parametram ir jābūt vienādam visiem punktiem, tad tas ir jānorāda ārpus funkcijas aes()
pašā geom_...()
vai ggplot()
funkcijā. Toties, ja parametram ir jāmainās atkarībā no mainīgā, tad tas obligāti jāliek funkcijā aes()
.
Šajā piemērā punktu krāsa un lielums ir mainīts visiem punktiem uzreiz (3.2 attēls). Krāsu var norādīt kā tās anglisko nosaukumu (tos var apskatīt ar funkciju colors()
) vai arī izmantojot heksadecimālo kodu.
Ja arguments color =
atrodas aes()
iekavās un tas ir atkarīgs no kāda mainīgā, tad punktu krāsa mainīsies atbilstoši vērtībām, kā arī parādīsies atbilstošā leģenda. Krāsu maiņa un leģendas veids ir atkarīgs no tā, kāda veida mainīgais ir izmantots. Ja krāsa ir atkarīga no kategorijas mainīgā, tad krāsas mainīsies diskrēti (3.3 attēls).
Toties norādāt kā mainīgo tādu, kas ir skaitlisks, krāsa mainīsies kā gradients (3.4 attēls).
Punktu forma var mainīties tikai atkarībā no kategorijas mainīgā (3.5 attēls).
Ir iespējams panākt arī, ka, piemēram, punktu forma mainās atkarībā no viena mainīgā, bet krāsa atkarībā no cita mainīgā. Šajā gadījumā parādīsies arī divas leģendas (3.6 attēls).
3.2 geom_bar()
Stabiņu attēlus veido ar funkciju geom_bar()
. Šai funkcijai aes()
ir jānorāda tikai x vērtības (diskrētas), jo novērojumu skaits katrā klasē tiek saskaitīts automātiski (geom_bar()
balstās un stat_count()
) (3.7 attēls).
Stabiņu attēlā katram stabiņa ir iespējams mainīt krāsu (color =
) un aizpildījumu (fill =
). Arguments color =
nosaka līnijas krāsu apkārt katram no stabiņiem, bet fill =
nosaka paša stabiņa krāsu (aizpildījumu) (3.8 attēls).
Padarot aizpildījumu atkarīgu no kāda kategrijas mainīgā, izveidojas stabiņu attēls, kur pie katras x mainīgā kategorijas, stabiņš ir sadalītas pa daļām balstoties uz jauno mainīgo (3.9 attēls).
Pieliekot argumentu position = "dodge"
, var panākt, ka pie katras x kategorijas stabiņi ir viens otram blakus, nevis viens virs otra (3.10 attēls).
3.3 geom_col()
Gadījumos, kad dati ir jau apkopoti un ir nepieciešams izveidot stabiņu attēlu, tad labāk izmantot geom_col()
, kam jānorāda gan x vērtības, gan arī atbilstošās y vērtības (skaiti) (3.11 attēls).
## Dzimums Skaits
## 1 S 23
## 2 V 45
3.4 geom_line()
Datu punktu savienošanai ar līniju var izmantot geom_line()
, kas savieno punktus no mazākās x vērtības līdz lielākajai x vērtībai (3.12 attēls).
Līnijām ir iespējams mainīt tās platumu (linewidth =
), krāsu (color =
) un līnijas veidu (linetype =
) (3.13 attēls).
Ja kāds no līnijas parametriem ir atkarīgs no diskrēta trešā mainīgā, tad parādīsies tik daudz līnijas, cik mainīgajam ir līmeņi (3.14 attēls).
3.5 geom_path()
Līniju diagrammai līdzīgs ir arī geom_path()
, bet šajā gadījumā punkti tiek savienoti tādā secībā, kādā tie parādās datu tabulā (3.15 attēls). geom_path()
ir īpaši noderīgs gadījumos, ja jāsavieno x un y koordinātes, piemēram, attēlojot pārvietošanās ceļam.
3.6 geom_boxplot()
Vērtībamplitūdas diagrammas veidošanai izmanto geom_boxplot()
. Šim attēla veida x vērtībām ir jābūt kvalitatīviem datiem, vai arī skaitliskiem datiem, kas pārvērsti par faktoru. y vērtībām obligāti ir jābūt skaitliskām (3.16 attēls).
Līdzīgi kā stabiņu attēlam vērtībamplitūdas diagrammā var mainīt līniju un punktu krāsu (color =
) vai arī “kastītes” aizpildījumu (fill =
) (3.17 attēls).
Izlēcēju (neraksturīgo vērtību) punktu krāsu, formu un izmēru var mainīt arī atsevišķi, izmantojot argumentus outlier.color =
, outlier.shape =
un outlier.size =
(3.18 attēls).
ggplot(CO2, aes(Type, uptake)) +
geom_boxplot(outlier.color = "red", outlier.shape = 13, outlier.size = 3)
Ja arguments fill =
atrodas funkcijas aes()
iekavās un tas ir atkarīgs no kāda mainīgā, tad pie katras atbilstošās x vērtības, vērtībamplitūdas diagramma tiek sadalīta tik daļās, cik līmeņi ir papildus mainīgajam, kā arī parādās atbilstošā leģenda ar izmantotajām aizpildījuma krāsām (3.19 attēls).
3.7 geom_count()
Gadījumos, kad nepieciešams attēlot izkliedes diagrammu, bet ir vērojama punktu pārklāšanās (pie vienādām x un y vērtībām ir vairāki novērojumi), var izmantot geom_count()
, kas parāda cik daudz novērojumu ir konkrētajām x un y vērtībām (3.20 attēls).
Ja aes()
funkcijā norāda argumentu size = after_stat(prop)
, tad punktu lielums ir parāda proporciju, nevis skaitu (3.21 attēls).
3.8 geom_histogram()
Histogrammas veidošanai izmanto funkciju geom_histogram()
, kam ir nepieciešamas tikai x vērtības. Pēc noklusējuma dati tiek dalīti trīsdesmit klasēs (3.22 attēls).
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Ar argumentu binwidth =
ir iespējams mainīt dalījuma klases lielumu, tādēji mainot klašu skaitu un histogrammas izskatu (3.23 attēls). Var arī norādīt vēlamo klašu skaitu ar argumenti bins =
.
Tā kā histogrammā parādās stabiņi, tad tiem ir iespējams mainīt gan līnijas krāsu (color =
), gan arī aizpildījumu (fill =
) (3.24 attēls).
Norādot, ka aizpildījums ir atkarīgs no mainīgā, izveidosies histogramma, kurā katrs stabiņš sadalīts daļās atbilstoši novērojumu skaitam katrā no līmeņiem (3.25 attēls).
3.9 geom_abline(), geom_hline() un geom_vline()
Ja attēlam ir nepieciešams pievienot diagonālu, horizontālu vai vertikālu līniju, tad jāizmanto attiecīgi geom_abline()
, geom_hline()
vai geom_vline()
.
Diagonālas līnijas pievienošanai jānorāda divas vērtības: slope =
(norāda slīpumu) un intercept =
(norāda, kur krusto y asi, ja x = 0) (3.26 attēls).
Horizontālas līnijas pievienošanai izmanto geom_hline()
, kurai kā arguments jānorāda yintercept =
(kādai y vērtībai atbilst līnija) (3.27 attēls).
Pie argumentu yintercept =
var norādīt arī uzreiz vairākas vērtības, kā redzultātā parādīsies vairākas līnijas (3.28 attēls).
Līnijas novietojums var būt atkarīgs no kāda mainīgā datos, tikai šajā gadījumā argumentam yintercept =
jāatrodas funkcijā aes()
(3.29 attēls).
dati.papildus <- data.frame(limeni = c(10,20,30,40))
ggplot(CO2, aes(conc, uptake)) + geom_point() +
geom_hline(data = dati.papildus, aes(yintercept = limeni))
Vertikālas līnijas pievieno ar funkciju geom_vline()
un argumentu xintercept =
(kādai x vērtībai atbilst līnija) (3.30 attēls). Pārējie darbības principi ir līdzīgi geom_hline()
.
3.10 geom_jitter()
Gadījumos, kad nepieciešams izveidot izkliedes (punktu) diagrammu, bet vērojam vērtību pārklāšanās (daudz identisku vērtību), var izmantot geom_jitter()
, kur punktiem tiek veikta neliela nobīde x vai y (vai abu) ass virzienā, lai novērstu pārklāšanos. Šādu attēlošanas veidu sevišķi ērti izmantot, ja x vērtības ir kategorijas mainīgais, jo tad izkliede notiek tikai x ass virzienā, bet y ass virzienā redzamas reālās vērtības (3.31 attēls).
geom_jitter()
ir labi izmantot kombinācijā ar geom_boxplot()
, jo tādējādi gan parādās reālās vērtības, gan arī vērtību apkopojums (3.32 attēls).
geom_jitter()
un geom_boxplot()
var kombinēt arī gadījumos, kad vērtībamplitūdas diagramma ir sadalīta atbilsotīs trešā mainīgā līmeņiem, bet šajā gadījumā papildus ir jānorāda arguments position = position_jitterdodge()
, lai punktu izvietojums atbilstu reālajam vērtību sadalījumam pa līmeņiem (3.33 attēls).
ggplot(CO2,aes(Type, uptake, fill = Treatment)) + geom_boxplot() +
geom_jitter(position = position_jitterdodge())
3.11 geom_smooth()
Ja ir vēlme attēlam pievienot trenda līniju, tad jāizmanto geom_smooth()
. Pēc noklusējuma izveidojas izlīdzīnātā trenda līnija un tās ticamības intervāls ar metodi loess vai gam (3.34 attēls).
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Lineārās trenda līnijas pievienošanai, jānorāda arguments method = "lm"
(3.35 attēls).
## `geom_smooth()` using formula = 'y ~ x'
Ar argumentu se = FALSE
var noņemt ticamības intervālu (3.36 attēls).
## `geom_smooth()` using formula = 'y ~ x'
Trenda līnijas krāsu maina ar argumentu color =
, bet ticamības intervāla aizpildījumu ar argumentu fill =
. Ja vienu vai abus no šiem argumentiem norāda aes()
iekavās un tas ir atkarīgs no kāda mainīgā, tad trenda līnijas tiek izveidotas katram līmenim (3.37 attēls).
ggplot(CO2, aes(conc, uptake)) + geom_point() +
geom_smooth(method = "lm", aes(color = Type, fill = Type))
## `geom_smooth()` using formula = 'y ~ x'
Trenda līniju var veidot ne tikai izmantojot esošo formulu y ~ x
, bet arī izmantojot kādu citu saistību starp abiem mainīgajiem. Šajā gadījumā jāizmanto arguments formula =
un jālieto apzīmējumi x un y, nevis oriģinālie mainīgo nosaukumi (3.38 attēls).
ggplot(CO2, aes(conc, uptake)) + geom_point() +
geom_smooth(method = "lm", formula = y ~ x + I(x^2))
3.12 geom_violin()
Īpašs datu attēlošanas veids ir geom_violin()
, kas sevī apvieno gan vērtībamplitūdas diagrammas īpašības, gan arī blīvuma attēla īpašības. Pēc būtības tas ir blīvuma attēls, kurā vērtību blīvuma funkcijas attēlojums dots spoguļattēlā (3.39 attēls).
Ar argumentu draw_quantiles =
attēlu var papildināt ar kvantiļu pozīcijām (3.40 attēls).
Pievienojot argumenu fill =
funkcijā aes()
, attēls tiek sadalīts katram no faktora līmeņiem (3.41 attēls).