7. nodaļa. Attēla noformēšana
ggplot2 sistēmā izveidoto attēlu izskata mainīšanai var izmantot iepriekš sagatavotas attēla noformēšanas tēmas, vai arī var mainīt katru elementu atsevišķi. Mainot noformējumu, mainās tikai tās attēla daļas, kas nav saistītas attēlojamiem datiem.
7.1 Definētās attēla tēmas
Paketē ggplot2 ir definētas gatavas tēmas attēla izskata maiņai. Attēlā noformējums mainās, pieskaitot klāt atbilstošo tēmas funkciju. Katrā tēmā papildus ir iespējams mainīt pamatteksta izmēru (base_size =
) un pamatfontu (base_family =
). Gatovos tēmu noformējumus protams var papildināt arī ar citām izmaiņām konkrētiem elementiem. Attēlos 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.8 un 7.9 parādīts kā izskatās sākotnējais attēls un kā tas mainās, izmantojot kādu no gatavajām tēmām.

7.1 attēls. Attēls bez papildus noformējuma

7.2 attēls. Attēls ar theme_bw()

7.3 attēls. Attēls ar theme_classic()

7.4 attēls. Attēls ar theme_dark()

7.5 attēls. Attēls ar theme_grey()

7.6 attēls. Attēls ar theme_light()

7.7 attēls. Attēls ar theme_linedraw()

7.8 attēls. Attēls ar theme_minimal()

7.9 attēls. Attēls ar theme_void()
7.2 Atsevišķu attēla elementu mainīšana
Papildus jau definētajām attēla noformējuma tēmām, ir iespējams mainīt gandrīz katru no attēla elementiem atsevišķi, izmantojot funkciju theme()
un atbilstošo elementa nosaukumu. Pilnu sarakstu ar elementu nosaukumiem var iegūt apskatot funkcijas theme()
palīdzības lapu.
Elementu izskatu maiņa notiek pēc vienota principa - sākotnēji ir funkcija theme()
, kurā kā arguments jānorāda maināmais elements, piemēram, axis.text.x =
un tad nāk funkcija, kas norāda kāda izmaiņas veikt. Ir pieejamas trīs funkcijas element_text()
, element_line()
un element_rect()
, kuras ir jāizraugas atbilstoši tam, kāda veida maināmais elements tas ir - teksts, līnija vai reģions (poligons). Katra elementa maiņa nav jāraksta savā theme()
funkcijā, bet tie var būt vairāki argumenti vienā funkcijā.
Teksta elementiem (element_text()
) var mainīt teksta fontu grupu (family =
), fonta veida (face =
), krāsu (color =
), izmēru (size =
), novietojumu horizentāli (hjust =
) un vertikāli (vjust =
), teksta leņķi (angle =
), līnijas augstumu (lineheight =
), atstarpes (margin =
).
Līniju elementiem (element_line()
) var mainīt krāsu (color =
), līnijas biezumu (linewidth=
), līnijas veidu (linetype =
), līnijas nobeigumu (lineend =
) un pievienot bultu (arrow =
).
Reģiona jeb poligona elementiem (element_rect()
) var mainīt aizpildījumu (fill =
), krāsu līnijai apkārt reģionam (color =
), līnijas biezumu (linewidth =
) un līnijas veidu (linetype =
).
Ir pieejama arī speciāla funkcija element_blank()
, kas no attēla noņems atbilstošo elementu, turklāt “pazudīs” arī šim elementam atvēlētā vieta, ja tas būs, piemēram, asu paraksts, vai asu apzīmējumi.
7.2.1 Attēla virsraksts
Attēla virsraksta izskatu (bet ne tā saturu) maina ar argumentu plot.title =
.
Pirmajā piemēra teksta virsraksts pārveidots zaļā krāsā, 20 fonta izmērā un slīprakstā (7.10 attēls).
ggplot(CO2, aes(conc, uptake, color = Type)) + geom_point() +
labs(title = "CO2 attēls")+
theme(plot.title = element_text(colour = "darkgreen",
size = 20,
face = "italic"))

7.10 attēls. Attēls ar mainītu virsraksta izskatu
Virsraksts automātiski ir novietots attēla kreisajā pusē. To var izmainīt ar argumentu hjust =
un vērtību 0.5 (0 - kreisā mala, 1 - labā mala, 0.5 - pa vidu) (7.11 attēls).
ggplot(CO2, aes(conc, uptake, color = Type)) + geom_point() +
labs(title = "CO2 attēls")+
theme(plot.title = element_text(hjust = 0.5))

7.11 attēls. Attēls ar mainītu virsraksta novietojumu
Ja attēlam ir arī apakšvirsraksts, tad tā izskatu maina ar argumentu plot.subtitle =
(7.12 attēls).
ggplot(CO2, aes(conc, uptake, color = Type)) + geom_point() +
labs(title = "CO2 attēls", subtitle = "Koncentrācijas ietekme")+
theme(plot.subtitle = element_text(face = "bold",
colour = "blue"))

7.12 attēls. Attēls ar mainītu apakšvirsrakstu
7.2.2 Asu paraksti
Asu parakstu maiņa notiek ar elementu axis.title =
(abas asis vienlaicīgi), vai axis.title.x =
un axis.title.y =
mainot katras ass izskatu atsevišķi.
Asu paraksti arī ir teksts, tāpēc izmantojama funkcija element_text()
(7.13 attēls).
ggplot(CO2, aes(conc, uptake, color = Type)) + geom_point() +
theme(axis.title = element_text(size = 15,
face = "bold"))

7.13 attēls. Attēls ar vienādu asu parakstu noformējumu
Izmantojot argumentus axis.title.x =
un axis.title.y =
var mainīt katru asi atsevišķi, piemēram, vienais asij noņemot parakstu, bet otrai to izmainot (7.14 attēls).
ggplot(CO2, aes(conc, uptake, color = Type)) + geom_point() +
theme(axis.title.x = element_blank(),
axis.title.y = element_text(colour = "red"))

7.14 attēls. Attēls ar x asi bez paraksta
7.2.3 Asu apzīmējumi
Apzīmējumus pie asīm (skaitļus vai līmeņu nosaukumus) maina ar argumentiem axis.text =
, axis.text.x =
, vai axis.text.y =
(7.15 attēls).
ggplot(CO2, aes(conc, uptake, color = Type)) + geom_point() +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
axis.text.y = element_text(angle = 90, hjust = 0.5))

7.15 attēls. Attēls ar mainītiem asu apzīmējumiem
7.2.4 Asu līnijas
Pēc noklusējuma vairākām tēmām nerādās asu līnijas. Tās var pievienot ar argumentu axis.line =
, vai axis.line.x =
un axis.line.y =
. Tā kā tās ir līnijas, tad to izskata maiņai izmanto funkciju element_line()
(7.16 attēls).
ggplot(CO2, aes(conc, uptake, color = Type)) + geom_point() +
theme(axis.line = element_line(linetype = "longdash"))

7.16 attēls. Attēls ar asu līnijām
Asu līniju galos ir iespējams arī pievienot bultiņu ar argumentu arrow =
un funkciju arrow()
, kurā norāda argumentu length =
un bultiņas garumu un mērvienību (funkcijā unit()
) (7.17 attēls).
ggplot(CO2, aes(conc, uptake, color = Type)) + geom_point() +
theme(axis.line = element_line(arrow = arrow(length = unit(2, 'mm'))))

7.17 attēls. Attēls ar bultiņām pie asīm
7.2.5 Leģendas novietojums
Leģendas novietojuma nosaka ar argumentu legend.position =
un iespējamām vērtībām "none"
, "left"
, "right"
, "bottom"
un "top"
(7.18 attēls).

7.18 attēls. Attēls ar leģendu apakšā
Ja nepieciešams novietot leģendu attēla iekšienē, tad jānorāda relatīvās x un y koordinātes, kur c(0,0)
atbilst attēla apakšējam kreisajam stūrim un c(1,1)
attēla augšējam labajam stūrim (7.19 attēls).
## Warning: A numeric `legend.position` argument in `theme()` was deprecated in ggplot2
## 3.5.0.
## ℹ Please use the `legend.position.inside` argument of `theme()` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

7.19 attēls. Attēls ar leģendu attēla iekšienē
Leģendas novietojumā var mainīt arī leģendas ierakstu izvietojumu horizontāli vai vertikāli ar argumentu legend.direction =
(7.20 attēls)
ggplot(CO2, aes(conc, uptake, color = Type)) + geom_point() +
theme(legend.position = "bottom",
legend.direction = "vertical")

7.20 attēls. Attēls ar leģendu apakšā un leģendas ierakstiem izkārtotiem vertikāli
Leģendas novietojumu var ietekmēt arī mainot atstarpi starp leģendu un pamatattēlu ar argumentu legend.box.spacing =
un funkciju unit()
, kurā norāda vēlamo atstarpes izmēru un mērvienību (7.21 attēls).
ggplot(CO2, aes(conc, uptake, color = Type)) + geom_point() +
theme(legend.box.spacing = unit(1, "cm"))

7.21 attēls. Attēls ar tālāk novietotu leģendu
7.2.6 Leģendas virsraksts
Leģendas virsrakstam var mainīt izskatu (legend.title =
) līdzīgi kā citiem teksta elementiem, kā arī mainīt leģendas virsraksta novietojumu (legend.title.align =
) ar vērtībām no 0 (pa kreisi) līdz 1 (pa labi) (7.22 attēls).
ggplot(CO2, aes(conc, uptake, color = Type)) + geom_point() +
theme(legend.title = element_text(size = 15,
color = "darkgreen",
face = "bold.italic"),
legend.title.align = 1)
## Warning: The `legend.title.align` argument of `theme()` is deprecated as of ggplot2
## 3.5.0.
## ℹ Please use theme(legend.title = element_text(hjust)) instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

7.22 attēls. Attēls ar mainītu leģendas virsrakstu
7.2.7 Leģendas pamatne
Kopējo leģendas pamatnes izskatu var mainīt ar argumenu legend.background =
un funkciju element_rect()
(7.23 attēls).
ggplot(CO2, aes(conc, uptake, color = Type)) + geom_point() +
theme(legend.background = element_rect(fill = "grey73",
colour = "black"))

7.23 attēls. Attēls ar mainītu leģendas pamatni
Ja attēlam ir divas vai vairākas leģendas, tad legend.background =
maina katras atsevišķas leģendas pamatni, bet kopējo pamatni maina ar argumentu legend.box.background =
(7.24 attēls).
ggplot(CO2, aes(conc, uptake, color = Type, shape = Treatment)) + geom_point() +
theme(legend.box.background = element_rect(fill = "grey73",
colour = "black"),
legend.background = element_rect(fill = "grey90"))

7.24 attēls. Attēls ar mainītu abu leģendu pamatni
7.2.8 Leģendas teksti
Leģendas ierakstu tekstus maina ar argumentiem legend.text =
(to izskats) un legend.text.align =
(to novietojums pa kreisi (0) vai labi (1)) (7.25 attēls).
ggplot(CO2, aes(conc, uptake, color = Type)) + geom_point() +
theme(legend.text = element_text(size = 7,
angle = 5),
legend.text.align = 0.8)
## Warning: The `legend.text.align` argument of `theme()` is deprecated as of ggplot2
## 3.5.0.
## ℹ Please use theme(legend.text = element_text(hjust)) instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

7.25 attēls. Attēls ar mainītu leģendu tekstu
7.2.9 Leģendas ieraksti
Pašu leģendas ierakstu, kuros parādās, piemēram, krāsu līmeņi vai simbolu veidi, mainīšanai ir pieejams parametrs legend.key =
, kas maina ieraksta pamatnes izskatu (7.26 attēls).
ggplot(CO2, aes(conc, uptake, color = Type)) + geom_point() +
theme(legend.key = element_rect(fill = "lightblue",
color = "blue"))

7.26 attēls. Attēls ar mainītu leģendu ieraksta pamatni
Leģendas ierakstu pamatnes izmēru maiņai izmanto argumentu legend.key.size =
, kas uzreiz maina vienādā apjomā gan platumu, gan augstumu, vai arī parametrus legend.key.height =
un legend.key.width =
, kas attiecīgi maina tikai augstumu, vai tikai platumu. Visiem šiem argumentiem ir jāizmanto funkcija unit()
, lai noteiktu šo izmēru (7.27 attēls).
ggplot(CO2, aes(conc, uptake, color = Type)) + geom_point() +
theme(legend.key.height = unit(0.5, "cm"),
legend.key.width = unit(1, "cm"))

7.27 attēls. Attēls ar mainītu leģendu ierakstu izmēru
7.2.10 Attēla iekšējās daļas pamatne
Attēla iekšējās daļas pamatnes izskata maina ar argumentu panel.background =
. Ja šo argumentu lieto kopā ar funkciju element_blank()
, tad tiek noņemta pamatne, tai skaitā, arī krāsa (aizpildījums) (7.28 attēls).
ggplot(CO2, aes(conc, uptake, color = Type)) + geom_point() +
theme(panel.background = element_blank())

7.28 attēls. Attēls ar noņemta iekšējās daļas pamatni
Lai noņemtu tikai krāsu, arguments fill =
jānorāda kā NA. Ja papildus norāda argumenu color =
, tad apkārt attēla iekšējai daļai parādās līnija (7.29 attēls).
ggplot(CO2, aes(conc, uptake, color = Type)) + geom_point() +
theme(panel.background = element_rect(fill = NA, color = "black"))

7.29 attēls. Attēls ar līniju apkārt iekšējai daļai
7.2.11 Palīglīnijas (gridlines)
Visu palīglīniju ietekmēšanai jāizmanto arguments panel.grid =
, piemēram, tā vērtību norādot kā element_blank()
tiks noņemtas visas palīglīnijas (7.30 attēls).

7.30 attēls. Attēls bez palīglīnijām
Ir iespējams arī ietekmēt atsevišķi visas galvenās palīglīnijas un mazās palīglīnijas, attiecīgi ar argumentiem panel.grid.major =
un panel.grid.minor =
. Var ietekmē arī atsevišķi šīs palīglīnijas attiecībā pret x un y ass ar argumentiem kā panel.grid.major.x =
(7.31 attēls).
ggplot(CO2, aes(conc, uptake, color = Type)) + geom_point() +
theme(panel.grid.major.x = element_line(colour = "lightblue"),
panel.grid.major.y = element_line(linetype = "dashed",
linewidth = 2))

7.31 attēls. Attēls ar izmainītām palīglīnijām
7.2.12 Attēla daļu virsraksti
Tiem attēliem, kas ir sadalīti daļās izmantojot facet_...()
funkcijas, atsevišķu attēlu nosaukumu tekstu pamatnes maina ar elementu strip.background =
, bet pašu tekstu izskatu ar strip.text =
(visus kopā), vai arī ar argumentiem strip.text.x =
(horizontālie nosaukumi) un strip.text.y =
(vertikālie nosaukumi) (7.32 attēls).
ggplot(CO2, aes(conc, uptake)) + geom_point() +
facet_grid(Treatment ~ Type) +
theme(strip.background = element_rect(colour = "black", fill = NA),
strip.text.x = element_text(face = "italic"),
strip.text.y = element_text(face = "bold"))

7.32 attēls. Sadalīts attēls ar mainītiem nosaukumu noformējumiem
7.2.13 Visa attēla pamatne
Visa kopējā attēla pamatnes (fona) noteikšanai izmanto argumentu plot.background =
(7.33 attēls).
ggplot(CO2, aes(conc, uptake, color = Type)) + geom_point() +
theme(plot.background = element_rect(fill = "lightgreen"))

7.33 attēls. Attēls ar mainītu pamatnes krāsu
Visam attēlam var mainīt arī malas izmērus, kas atrodas apkārt. To nosaka ar argumentu plot.margin =
un funkcijā unit()
norādot četrus skaitļus, kas atbilst attiecīgi augšejai, labajai, apakšējai un kreisajai malai (7.34 attēls).
ggplot(CO2, aes(conc, uptake, color = Type)) + geom_point() +
theme(plot.margin = unit(c(2, 2, 3, 3), "cm"))

7.34 attēls. Attēls ar mainītiem malas izmēriem
7.3 Noformējuma saglabāšana kā objektu
Attēla noformējuma nosacījumus nav obligāti jāpievieno attēlam kā atsevišķas funkcijas theme()
, bet visus nepieciešamos elementus var norādīt vienās theme()
iekavās (7.35 attēls).
ggplot(CO2, aes(conc, uptake, color = Type)) + geom_point() +
theme(axis.text = element_text(size = 12, color = "darkgreen"),
axis.title = element_text(size = 15, color = "darkblue", face = "italic"),
panel.background = element_rect(fill = NA),
axis.line = element_line(color = "black"),
legend.position = "top")

7.35 attēls. Attēls, kuram mainīti vairāki attēla elementi
Noformējumu ir iespējams arī definēt kā atsevišķu objektu, kuru tad var izmantot atkāroti, lai vairākiem attēliem iegūtu identisku noformējumu (7.36 attēls).
tema <- theme(axis.text = element_text(size = 12, color = "darkgreen"),
axis.title = element_text(size = 15, color = "darkblue", face = "italic"),
panel.background = element_rect(fill = NA),
axis.line = element_line(color = "black"),
legend.position = "top")
ggplot(CO2, aes(uptake, fill = Treatment)) + geom_histogram(binwidth = 5) +
tema

7.36 attēls. Attēls, kuram mainīti vairāki attēla elementi