Kodas
curve(sin, -pi, pi)
Kaip jau žinote, bazinio R grafines funkcijas galima suskirstyti į aukšto ir žemo lygio funkcijas. Daugelį dažnai naudojamų grafikų galima nubraižyti naudojant funkciją plot(), tačiau kai kuriuos grafikus ir diagramas patogiau braižyti taikant tam skirtas specializuotas funkcijas.
curve()
Funkcija curve() naudojama vieno kintamojo funkcijoms \(y = f(x)\) braižyti.
| Argumentas | Reikšmė |
|---|---|
expr |
funkcijos \(f(x)\) pavadinimas |
from |
funkcijos braižymo intervalo pradžia |
to |
funkcijos braižymo intervalo pabaiga |
n |
taškų skaičius intervale [from, to]
|
add |
FALSE, nurodo, ar grafiką uždėti ant jau sudaryto grafiko |
xname |
funkcijos \(f(x)\) argumento vardas |
Ši funkcija beveik analogiška funkcijos plot() metodui plot.function. Pavyzdžiui, nubrėšime funkcijos \(y = \sin x\) grafiką uždarame intervale.
curve(sin, -pi, pi)
Jeigu norime atvaizduoti funkciją sudarytą iš standartinės R funkcijos ar kelių tokių funkcijų, galime tokią funkciją iš karto užrašyti expr parametre.
Funkciją curve() galima naudoti kaip žemo lygio funkciją, t.y. uždėti jos grafiką ant jau esamo, prieš tai sukurtu grafiko. Pvz., nubraižysime funkcijos \(y = \sin (kx) / k\) grafiką, kai argumentas \(k\) kinta nuo 1 iki 4.
fun.si <- function(x, k) y <- sin(k*x)/kŠi funkcija yra dviejų kintamųjų funkcija, todėl turime vieną kintamąjį fiksuoti tam, kad curve() galėtų šią funkciją atvaizduoti.
curve(fun.si(x, k = 1), -pi, pi)
Grafikus su kitomis \(k\) reikšmėmis uždėsime „ant viršaus“.

Argumentas xname nurodo, koks simbolis braižomoje funkcijoje bus laikomas nepriklausomu kintamuoju (abscisių ašies vardu). Pagal nutylėjimą tai yra \(x\), tačiau jei funkcijoje naudojamas kitas simbolis, jį būtina aiškiai nurodyti naudojant xname. Tai leidžia funkcijai teisingai suprasti, kokį kintamąjį keisti braižant kreivę. Pavyzdžiui, jei braižome funkciją \(f(t) = 2sin(t) + cos(t/2)\), tai reikia naudoti parametrą xname = "t".

Naudojant funkciją curve(), nubraižykite funkcijos \(y = \ln x\) grafiką intervale \((0, 1]\). Grafiko \(Oy\) ašies ribas nustatykite \([-5, 5]\).
Ant vieno grafiko nubraižykite funkcijų \(y = \sin x\) ir \(y = \cos x\) atitinkamai raudonos ir mėlynos spalvos grafikus.
barplot()
Funkcija barplot() skirta stulpelinėms diagramoms. Dažniausiai naudojami parametrai išvardyti lentelėje.
| Argumentas | Reikšmė |
|---|---|
height |
stulpelių aukščių vektorius arba matrica |
width |
stulpelių pločiai |
space |
tarpas tarp stulpelių |
horiz |
ar stulpeliai braižomi horizontaliai (FALSE - vertikaliai) |
beside |
ar grupės stulpeliai braižomi greta |
add |
ar piešti ant jau esančio grafiko |
Paprasčiausiu atveju nurodžius sveikųjų skaičių vektorių bus atvaizduojama stulpelinė diagrama, kur kiekvieno stulpelio aukštis atitiks vektoriaus elemento reikšmę.
Stulpelio pločiai nustatomi keičiant parametro width reikšmę. Jeigu width įgyja daugiau nei vieną reikšmę, t.y. perduodamas vektorius su daugiau nei vienu elementu, tai stulpelių pločiai bus perduodamo vektoriaus elementų reikšmės.
barplot(h, width = 1:2)
Stulpeliai vienas nuo kito atskiriami tarpu, kurio plotis proporcingas stulpelio pločiui. Pagal nutylėjimą proporcingumo koeficientas lygu \(0,2\).
Aišku, galima keisti ir standartinius grafinius parametrus, tokius kaip ašių ribas, stulpelių spalvą, pagrindinę diagramos antraštę ir t.t.
Dažnai funkcija barplot() naudojama įvairioms dažnių lentelėms atvaizduoti. Kaip pavyzdį panaudosime laivo Titanic įvairių kategorijų keleivių skaičiaus lentelę Titanic.
Pirmiausia peržiūrėsime kategorijas ir jų reikšmes.
Titanic
#> , , Age = Child, Survived = No
#>
#> Sex
#> Class Male Female
#> 1st 0 0
#> 2nd 0 0
#> 3rd 35 17
#> Crew 0 0
#>
#> , , Age = Adult, Survived = No
#>
#> Sex
#> Class Male Female
#> 1st 118 4
#> 2nd 154 13
#> 3rd 387 89
#> Crew 670 3
#>
#> , , Age = Child, Survived = Yes
#>
#> Sex
#> Class Male Female
#> 1st 5 1
#> 2nd 11 13
#> 3rd 13 14
#> Crew 0 0
#>
#> , , Age = Adult, Survived = Yes
#>
#> Sex
#> Class Male Female
#> 1st 57 140
#> 2nd 14 80
#> 3rd 75 76
#> Crew 192 20
dimnames(Titanic)
#> $Class
#> [1] "1st" "2nd" "3rd" "Crew"
#>
#> $Sex
#> [1] "Male" "Female"
#>
#> $Age
#> [1] "Child" "Adult"
#>
#> $Survived
#> [1] "No" "Yes"Ši lentelė yra keturių kintamųjų kryžminė dažnių lentelė. Sumuodami tokią lentelę pagal vieną kurį nors kintamąjį, gauname to kintamojo reikšmių dažnių lentelę. Pvz., sudarysime skirtinga klase keliavusių keleivių skaičiaus lentelę ir nubraižysime ją atitinkančia stulpelinę diagramą.
d <- margin.table(Titanic, 1)
d
#> Class
#> 1st 2nd 3rd Crew
#> 325 285 706 885
barplot(d)
Taip pat pavyzdžiui, sudarysime keleivio klasės ir lyties dažnių lentelę ir ją atvaizduosime diagramos pavidalu.
d <- margin.table(Titanic, c(2, 1))
d
#> Class
#> Sex 1st 2nd 3rd Crew
#> Male 180 179 510 862
#> Female 145 106 196 23
barplot(d)
Jeigu norime, kad atskiroje kategorijoje kito kintamojo dažnius vaizduotume ne vienu stulpeliu, o išskaidytus stulpeliais, naudojame parametrą beside = TRUE.
barplot(d, beside = TRUE)
Funkcija barplot ne tik nubraižo stulpelinę diagramą, bet taip pat grąžina stulpelių vidurio taškus, kai nurodome parametrą plot = FALSE arba barplot() rezultatą priskiriame kintamajam.

barstat
#> [1] 0.7 1.9 3.1 4.3Funkcija barplot() turi ir daugiau papildomų parametrų, kurių naudojimą galite pabandyti išsiaiškinti savarankiškai.
| Argumentas | Reikšmė |
|---|---|
col |
stulpelių spalvos |
border |
stulpelių rėmelio spalva (NA – be rėmelio) |
names.arg |
stulpelių etikečių vektorius |
axisnames |
rodyti ar slėpti ašių žymes |
axes |
rodyti ar slėpti pačias ašis |
Iš vektoriaus n <- c(1, 3, 2, 5, 4) sukurkite stulpelinę diagramą, kurioje visų stulpelių spalvos būtų skirtingos.
Tai pačiai stulpelinei diagramai suteikite stulpelių vardus.
Nubraižykite vektoriaus n stulpelinę diagramą, kurioje kiekvieno stulpelio plotas būtų lygus vienetui. Nustatykite ašių santykį lygų 1.
Naudodami duomenų lentelę HairEyeColor, sudarykite kryžminę akių ir plaukų spalvos dažnių lentelę. Parametrui legend priskirkite reikšmę TRUE. Kokia akių spalva rečiausia tarp blondinų?
boxplot()
Funkcija boxplot() naudojama vieno arba kelių kiekybinių kintamųjų stačiakampėms (angl. boxplot, box and whisker plot) diagramoms.
Tai dažnai aprašomojoje statistikoje naudojamas grafinis būdas nurodyti kiekybinio kintamojo reikšmių padėtį, sklaidą, asimetriją naudojant kvartilius. JAV statistikas John Tuckey pirmasis pavaizdavo tokio tipo grafiką 1970 m.
| Argumentas | Reikšmė |
|---|---|
x |
skaitinio kintamojo reikšmių vektorius |
data |
duomenų lentelės pavadinimas |
subset |
loginė sąlyga, kuri išskiria dalį stebinių |
at |
x reikšmės, kuriose bus dėžutės |
horizontal |
ar dėžutės braižomos horizontaliai |
add |
ar dėžutės uždedamos ant jau esančio grafiko |
Pavyzdžiui, taip atrodo vieno kiekybinio kintamojo s stačiakampė diagrama.

Tokio tipo grafikas susideda iš dviejų dalių: stačiakampės dėžutės ir vadinamųjų „ūsų“. Dėžutės plotis yra lygus skirtumui tarp kiekybinio kintamojo trečio ir pirmo kvartilio, taip pat dar vadinamu tarpkvartiliniu pločiu (angl. interquartile range, IQR). Dėžutės viduje esanti linija žymi kiekybinio kintamojo medianą.
Tuo tarpu ūsai yra brėžiami tam tikru atstumu nuo dėžutės. Pagrindinis atvaizdavimo principas – ūsai turi pasibaigti ties egzistuojančia kiekybinio kintamojo reikšme. Pavyzdžiui, ūsai gali būti brėžiami ties minimaliomis ir maksimaliomis reikšmėmis. Tačiau dažniau ūsų ilgis apibrėžiamas nuo pirmo ir trečio kvartilio nutolusiu atstumu, lygiu \(k \cdot IQR\). Čia \(k\) yra laisvai pasirenkamas parametras, kuris reguliuoja ūsų ilgį. Pagal nutylėjimą \(k = 1.5\), o funkcijoje boxplot() jam atitinkantis parametras yra range.
Kadangi ūsai visada turi baigtis ties duomenyse egzistuojančia reikšme, jų ilgis diagramoje gali atrodyti nevienodas, net jei atstumas nuo kvartilių abejose pusėse yra vienodas. Visi kiti stebiniai, kurie patenka už ūsų ribų, laikomi išskirtimis (angl. outliers) ir vaizduojami atskirai: taškais, mažais apskritimais, žvaigždutėmis ar kitais simboliais.
Jei kiekybinio kintamojo s reikšmės yra iš skirtingų grupių, galima nubraižyti stačiakampes diagramas kiekvienoje grupėje atskirai.
boxplot(s ~ k)
Jeigu stačiakampei diagramai reikalingi kintamieji yra data.frame tipo duomenų lentelėje, funkcijai boxplot() galima nurodyti jos vardą ir kintamuosius užrašyti per formulę.
boxplot(Temp ~ Month, data = airquality)
Nurodyti duomenų lentelę yra patogu, nes tada boxplot() funkcijai galima nusakyti duomenų poaibį, iš kurio turi būti braižomas grafikas.
boxplot(Temp ~ Month, data = airquality, subset = Month < 8)
Funkcija boxplot() ne tik nubraižo stačiakampę diagramą, bet ir gali sukurti jai nubraižyti reikalingą duomenų rinkinį - boxplot objektą (sąrašą). Jame surašytos grupės, ir jų vardai, reikšmių ir išsiskiriančių elementų kiekvienoje grupėje skaičius, dėžutei nubraižyti reikalingos statistikos: mediana, kvartiliai ir ūsų galai.
boxstat <- boxplot(Temp ~ Month, data = airquality)
boxstat$stats # visų grupių dėžučių statistikos: galai, kvartiliai, mediana
#> [,1] [,2] [,3] [,4] [,5]
#> [1,] 56 67 80.0 72.0 63
#> [2,] 60 76 81.5 79.0 71
#> [3,] 66 78 84.0 82.0 76
#> [4,] 69 83 86.0 88.5 81
#> [5,] 81 93 92.0 97.0 93
boxstat$n # reikšmių grupėse skaičius
#> [1] 31 30 31 31 30
boxstat$conf # medianos pasikliautinasis intervalas
#> [,1] [,2] [,3] [,4] [,5]
#> [1,] 63.44601 75.98073 82.72301 79.30412 73.11533
#> [2,] 68.55399 80.01927 85.27699 84.69588 78.88467
boxstat$out # išsiskiriančių stebinių reikšmės
#> [1] 65 73 74
boxstat$group # išsiskiriančių stebinių grupės numeriai
#> [1] 2 3 3
boxstat$names # grupių vardai
#> [1] "5" "6" "7" "8" "9"Naudodami duomenų lentelę iris, nubraižykite Sepal.Length boxplot diagramą grupėse pagal Species. Kurioje grupėje mediana didžiausia?
Užrašykite komandą, kuri, naudojant objektą boxstat, automatiškai nustatytų, kuriose grupėse yra išskirčių.
hist()
Funkcija hist() skirta kiekybinio kintamojo dažnių histogramos sudarymui ir jos braižymui.
| Argumentas | Reikšmė |
|---|---|
x |
kintamojo reikšmių vektorius |
breaks |
intervalų ribos: vektorius arba intervalų skaičius |
freq |
TRUE – braižyti dažnių histogramą, FALSE – tankio histograma |
right |
TRUE – intervalai \((a,b]\), FALSE – \([a,b)\)
|
labels |
TRUE – rodyti dažnius stulpelių viršuje |
plot |
TRUE – brėžti, FALSE – tik sukurti objektą |
add |
TRUE – brėžti ant esamo grafiko |
Panaudosime Nilo vandens lygio stebėjimo duomenis pavyzdžiams iliustruoti.
x <- as.numeric(Nile)
hist(s)
Be papildomų nustatymų histogramos stulpelių skaičius parenkamas automatiškai. Naudojant parametrą breaks, kintamojo reikšmių sritį galima padalinti į kelis intervalus, pagal kuriuos ir sudaroma histograma. Pats paprasčiausias būdas – nurodyti intervalų padalijimo taškų vektorių. Reikia priminti, kad histogramos stulpelių bus vienu mažiau nei taškų skaičius.
Intervalų sudarymo komandą galima visiškai automatizuoti. Paprastai histograma braižoma intervale nuo minimalios iki maksimalios kintamojo reikšmės. Tada jas galima apskaičiuoti naudojant funkcijas min() ir max(). Intervalų skaičių nurodome per funkcijos seq() parametrą length.out. Pastaba: intervalai yra \((a, b]\) formos, ir formaliai minimalią reikšmę turintis imties elementas į pirmąjį intervalą turėtų nepatekti, tačiau hist() parametras include.lowest nurodo, kad reikia įtraukti.
Kintamojo reikšmes padalinti į intervalus galima ir naudojant funkciją pretty(). Ši funkcija padalinimo taškus parenka taip, kad visi intervalai būtų “gražūs”.
Analogiškai kaip ir kitos aukšto lygio funkcijos, funkcija hist() ne tik nubraižo histogramą, bet ir gali grąžinti histogramos nubraižymo duomenų sąrašą. Jei pats grafikas nereikalingas, jo braižymą galima uždrausti naudojant parametrą plot.
histat <- hist(x, breaks = pretty(x), plot = FALSE)
histat
#> $breaks
#> [1] 400 600 800 1000 1200 1400
#>
#> $counts
#> [1] 1 25 44 23 7
#>
#> $density
#> [1] 0.00005 0.00125 0.00220 0.00115 0.00035
#>
#> $mids
#> [1] 500 700 900 1100 1300
#>
#> $xname
#> [1] "x"
#>
#> $equidist
#> [1] TRUE
#>
#> attr(,"class")
#> [1] "histogram"Iš jo galima sužinoti, kokie yra kintamojo dažniai intervaluose, šių intervalų padalinimo taškus, intervalų vidurio taškus ir pan.
histat$breaks # intervalų padalinimo taškai
#> [1] 400 600 800 1000 1200 1400
histat$mids # intervalų vidurio taškai
#> [1] 500 700 900 1100 1300
histat$counts # dažniai intervaluose
#> [1] 1 25 44 23 7Funkcija plot() turi metodą plot.histogram histogramos objektui atvaizduoti.
plot(histat)
Iš airquality duomenų rinkinio nubraižykite birželio temperatūros histogramą. Nurodykite ašių pavadinimus ir grafiko pavadinimą.
Sukurkite histogramos stulpelių etiketes – didžiąsias abėcėlės raides, automatiškai priskiriant tiek raidžių, kiek yra stulpelių.
Užrašykite komandą, kuri naudodama histogramos objektą, surastų aukščiausią histogramos stulpelį atitinkančio intervalo vidurį.
Sugalvokite būdą, kaip nubraižyti Nilo vandens lygio histogramą panaudojant dažnius intervaluose iš anksčiau jau sukurto histogramos objekto – histat.
Pateikite būdą, kaip bet kurio vektoriaus x histogramos grafiką gauti nenaudojant funkcijos hist(), o tik naudojant pvz. plot(), barplot() ir intervalų skaičiavimą.
Šioje dalyje visos iki šiol aptartos grafinės funkcijos pagal nutylėjimą naudojamos kaip aukšto lygio funkcijos. Nustačius tose funkcijose parametrą add = TRUE, nurodome, jog funkcija turi būti panaudota kaip žemo lygio grafinė funkcija.
Toliau aptarsime išskirtinai tik žemo lygio funkcijas, kurios naudojamos taškų, linijų ar kitų grafinių elementų jau sukurtiems grafikams papildymui.
points()
Taškai su koordinatėmis \((x, y)\) ant jau nubraižyto grafiko uždedami naudojant funkciją points().
| Argumentas | Reikšmė |
|---|---|
x |
\(x\) reikšmių vektorius |
y |
\(y\) reikšmių vektorius |
pch |
taško simbolis |
cex |
taško simbolio dydis |
col |
taško spalva |
Pavyzdžiui, ant sklaidos diagramos pažymime vieną raudoną tašką \((2,2)\).

Ant to pačio grafiko atidėsime vienetinio apskritimo taškus.

Kitas pavyzdys - ant kiekvienos iš stačiakampių diagramų uždėsime atitinkamo vidurkio tašką. Panaudosime airquality duomenų lentelę, kad apskaičiuotume vidutinę temperatūrą pagal mėnesius.

Funkcijai points() taškų koordinates galima nurodyti ir per jų sąryšio formulę. Pvz., ant pagal mėnesius suskirstytos temperatūros boxplot diagramos uždėsime visas atitinkamo mėnesio temperatūrų reikšmes.
Kintamojo Month reikšmės kinta nuo 5 iki 9, o pagal nutylėjimą boxplot() diagramas atiteda ant \(Ox\) ašies ties taškais \(x=1\), \(x=2\) ir t.t., todėl nurodysime naudojant parametrą at ant kokių reikšmių atidėti stačiakampes diagramas.

Keičiant points() parametro type reikšmę, galime keisti taškų atvaizdavimo stilių. Pvz., nubraižysime f-jos \(y = \sin x\) grafiką intervale \([-\pi, \pi]\) ir kas \(\pi/8\) išdėstytus taškus sujungsime dviem laiptuotom linijom.

Jei sudėtingoje diagramoje yra kelios pasikartojančios konstrukcijos, jas galima užrašyte kaip funkciją. Keičiant funkcijos parametrus galima keisti grafinės konstrukcijos diagramoje vietą, dydį ir kitas charakteristikas.
Pavyzdžiui, ant esančio grafiko uždėsime vertikalias atkarpas nuo funkcijos kreivės taško iki \(Ox\) ašies.
curve(sin, 0, pi, ylab = "sin(x)", las = 1, frame = FALSE)
add.pt <- function(t, col = "red") {
y <- sin(t)
points(t, y, type = "h", col = col) # vertikali atkarpa
points(t, y, pch = 19, col = col) # taškas ant kreivės
points(t, 0, pch = 19, col = col) # taškas ant ašies
}
# Vieną tašką galima uždėti taip:
add.pt(pi / 6)
Jeigu vienu metu reikia pakartoti grafinę konstrukciją keletą kartu, patogu tai atlikti naudojant for ciklą.
kampai <- seq(-pi, pi, by = pi / 4)
for (t in kampai) add.pt(t, col = "blue")
Duotas dažnių vektorius (3, 2, 5, 3, 1). Nubraižykite stulpelinę šių dažnių diagramą. Kiekvieno stulpelio centre (pagal plotį ir pagal aukštį) uždėkite raudoną tašką.
Naudojant funkciją plot(), grafike atidėkite tašką su koordinatėmis \((10, 10)\). Keisdami tik to pateis vieno taško simbolio dydį, gaukite grafiką, kuriame yra keletas koncentriškų apskritimų.
lines()
Kai papildomai uždėtus taškus reikia sujungti linijomis, naudojama žemo lygio funkcija lines(). Ji yra analogiška plot(x, y, type = "l"), tik nedaro naujo brėžinio, o papildo esamą grafiką.
| Argumentas | Reikšmė |
|---|---|
x |
x reikšmių vektorius |
y |
y reikšmių vektorius |
lty |
linijos tipas |
lwd |
linijos storis |
col |
linijos spalva |
Pavyzdžiui, ant anksčiau sudarytos Nilo upės vandens lygio histogramos uždėsime kreivę, kuri bus sudaryta iš atskirų taškų sujungtų linijomis.

Nubraižysime į mėnesius suskirstytos temperatūros sklaidos diagramą ir mėnesių temperatūros vidurkių taškus sujungsime atkarpomis.

Duomenų lentelėje cars yra automobilio greičio ir stabdymo atstumo duomenys. Nubraižykite šių kintamųjų sklaidos diagramą. Kiekvienai skiritingai greičio reikšmei apskaičiuokite atstumo vidurkį. Gautus taškus uždėkite ant grafiko ir sujunkite juos tiesės atkarpomis.
Nubraižykite funkcijos \(y = \sin(x)\) grafiką intervale \([-\pi, \pi]\), naudodami mėlynus taškus su dvigubu linijos storiu. Ant to paties grafiko raudona punktyrine linija nubrėžkite \(y = \cos x\) grafiką naudodami funkciją lines
abline()
Tiesės atkarpą galima nubraižyti naudojant bendro pobūdžio funkcijas plot() arba lines() – užtenka tik nurodyti dviejų taškų koordinates. Dėl tos pačios priežasties šis būdas nėra patogus.
Tiesės plokštumoje lygtį \(y = a + bx\) vienareikšmiškai nusako du parametrai: \(a\) ir \(b\). Norint nubraižyti vertikalią ar horizontalią tiesę, užtenka žinoti tik tašką, kuriame ši tiesės kreta \(Ox\) ar \(Oy\) ašį. Tokių tiesių braižymui naudojama funkcija abline().
| Argumentas | Reikšmė |
|---|---|
a |
tiesės parametras \(a\) |
b |
tiesės parametras \(b\) |
h |
taškas, kuriame \(Oy\) ašį kerta horizontali tiesė |
v |
taškas, kuriame \(Ox\) ašį kerta vertikali tiesė |
col |
tiesės spalva |
Pavyzdžiui, nubrėšime temperatūros kitimo laike grafiką ir uždėsime horizontalią liniją ties 80 laipsnių riba.
Tiesę galima uždėti ant bet kokio grafiko. Pvz., nubraižysime stulpelinę diagramą ir ant jos uždėsime horizontalią liniją.
d <- margin.table(Titanic, 1)
barplot(d)
abline(h = mean(d), col = "blue3", lty = 2)
Norint nubraižyti pasvirąją tiesę, funkcijai abline() nurodome tiesės parametrų a ir b reikšmes. Pvz., taip uždėsime funkcijos \(f(x) = x + 1/x\) vertikaliąją ir pasvirąją asimptotes.

Parametrams v ir h galima nurodyti iš karto kelias reikšmes. Tokiu būdu galima nubraižyti iš karto daug horizontalių ar vertikalių linijų.

Nubraižykite kintamojo Nile laiko eilutės grafiką ir uždėkite vidutinį vandens lygį žyminčią raudonos spalvos liniją.
Nubraižykite temperatūros iš duomenų lentelės airquality kitimo laike taškų sklaidos diagramą. Tada vertikaliomis tiesėmis atskirkite kiekvieno mėnesio stebinius.
text()
Funkcija text() leidžia ant jau esančio grafiko uždėti papildomą teksto etiketę bet kurioje grafiko vietoje, nusakytoje koordinatėmis \((x, y)\).
| Argumentas | Reikšmė |
|---|---|
x, y
|
teksto koordinatės (skaičiai arba vektoriai) |
labels |
tekstas arba tekstų vektorius |
pos |
padėtis aplink tašką: 1 - apačia, 2 - kairė, 3 - viršus, 4 - dešinė |
adj |
horizontalus/vertikalus lygiavimas (0 - kairė/apačia, 0.5 - centras, 1 - dešinė/viršus) |
cex |
šrifto dydžio mastelis |
col |
teksto spalva |
font |
šriftas: 1 - normalus, 2 - paryškintas, 3 - kursyvas, ir t.t |
Tegul kintamasis x yra planetos pusiaujo skersmuo kilometrais, o y – vidutinis tankis gramais į kubinį centrimetrą.

Pats paprasčiausias būdas kaip taškus grafike identifikuoti, tai priskirti jiems eilės numerį. Jei funkcijai text() nurodome vien tik taškų koordinates, pagal nutylėjimą ant taškų užrašomas jų numeris.
Pakeisti uždedami teksto poziciją galime su parametrui pos.
Dažniausiai taškų numeriai patys savaime nieko nereiškia ir negalima pasakyti pagal tai, kuo skiriasi stebiniai vienas nuo kito. Tokiais atvejais taškams galima priskirti kokį nors kitą požymį. Šiuo atveju naudosime naują kintamąjį – planetos pavadinimų vektorių t.

Toje pačioje pozicijoje galima uždėti kelis skirtingus tekstus, tik aišku kitas uždedamas tekstas turi būti pastumtas į šoną, kad nepersidengtų. Tam naudojamas parametras offset.
text(x, y, pos = 2, offset = -1)
Kitais grafinių elementų parametrais galima keisti teksto dydį, spalvą, šrifto tipą ir pan. Jei tekstą reikia pasukti tam tikru kampu, naudojamas parametras srt.

PASTABA! Įterpti čia locator() funkciją
Grafikas paprastai turi pagrindinę ir ašių antraštes. Teksto užrašymui grafiko paraštėse naudojama funkcija mtext().
| Argumentas | Reikšmė |
|---|---|
text |
tesktas arba išraiška |
side |
taško pusė, kurioje atidedamas tekstas (1, 2, 3 arba 4) |
line |
paraštės eilutės numeris, kurioje užrašomas tekstas |
at |
koordinatė, ties kuria paraštėje atidedamas tekstas |
adj |
skaičius (0 arba 1), nurodo, pagal kurią pusę lygiuoti tekstą |
cex |
teksto dydis |
col |
teksto spalva |
font |
šriftas: 1 - normalus, 2 - paryškintas, 3 - kursyvas, ir t.t |
Dar kartą nubraižysime planetų išsidėstymo grafiką, kuriame taškas proporcingas planetos dydžiui. Grafiko paraštėse užrašysime papildomą informaciją: dešinėje nurodytas duomenų šaltinis, apačioje dešinėje užrašoma grafiko sudarymo data.
plot(x, y, xlim = c(3, 6), ylim = c(3800, 14000), ann = F, fra = F, cex = y/2000)
text(x, y, labels = t, pos = 2, offset = 2)
text(x, y, labels = x, pos = 1, offset = 1.25, cex = 0.7)
informacija <- "Duomenys apie planetas paimti iš Wikipedijos"
mtext(text = informacija, side = 4, at = 4000, adj = 0.0, cex = 0.8, col = 8)
mtext("2025-07-20", side = 1, line = 3, adj = 1, font = 11, cex = 0.8, col = 8)
Papildomi užrašai prie taškų — gana savotiškas būdas plokštumoje atvaizduoti daugiamačius duomenis. Pavyzdžiui, paimsime keturių šalių 2011-2013 m. nedarbo ir infliacijos lygio duomenis. čia tokie kintamieji: šalis, metai, nedarbas ir infliacijos lygis.
t <- textConnection("
Šalis Metai N I
Lietuva 2011 15.3 4.1
Latvija 2011 16.2 4.4
Estija 2011 12.5 5.0
Švedija 2011 7.8 3.0
Lietuva 2012 13.2 3.1
Latvija 2012 15.0 2.3
Estija 2012 10.2 3.9
Švedija 2012 8.0 0.9
Lietuva 2013 11.5 1.5
Latvija 2013 11.6 0.4
Estija 2013 8.9 3.3
Švedija 2013 8.1 0.2")
d <- read.table(file = t, header = TRUE)Pradžioje nubraižysime paprastą infliacijos ir nedarbo lygio sklaidos diagramą.

Kadangi taškai diagramoje niekaip neatskiriami, be papildomų paaiškinimų tokia diagrama nieko neparodo. Todėl prie kiekvieno taško prirašysime, kuriai šaliai ir kuriems metams jis priklauso.

Tą patį grafiką galima perbraižyti dar kitaip. Sujungsime linijomis tos pačios šalies skirtingų metų taškus. Taip gausime jų judėjimo laike trajektoriją. čia sklaidos grafiką nubraižysime naudojant kintamųjų priklausomybės formulę. Toks užrašymo būdas yra patogesnis, kai iš duomenų lentelės reikia išskirti atskirų šalių stebinius, tada galima pasinaudoti parametru subset.
plot(I ~ N, data = d, xlim = c(6, 17), ann = FALSE)
title(xlab = "Nedarbo lygis, %", ylab = "Infliacija, %")
text(I ~ N, data = d, labels = d$Metai, pos = 2, cex = .8, col = d$Metai - 2010)
points(I ~ N, data = d, col = d$Metai - 2010, pch = 19)
lines(I ~ N, data = d, subset = Šalis == "Lietuva", type = "b", lty = 3)
lines(I ~ N, data = d, subset = Šalis == "Latvija", type = "b", lty = 3)
lines(I ~ N, data = d, subset = Šalis == "Estija", type = "b", lty = 3)
lines(I ~ N, data = d, subset = Šalis == "Švedija", type = "b", lty = 3)
text(I ~ N, data = d, subset = Metai == 2012,
labels = d$Šalis, pos = 4, offset = 1, font = 2)
Nubraižykite parabolės \(y = x^2 + 2x - 15\) grafiką. Grafike šalia taškų, kuriuose parabolė kerta \(Ox\) ašį, uždėkite tekstą su šaknų \(x_1\) ir \(x_2\) reikšmėmis. Čia indeksams 1 ir 2 užrašyti naudokite funkciją expression().
Nubraižykite laiko eilutės Nile grafiką. Ties didžiausia ir mažiausia laiko eilutės reikšme uždėkite tekstus su atitinkamo stebinio numeriu ir eilutės reikšme.
Nubraižykite duomenų lentelės airquality kintamojo Temp reikšmių histogramą. F-jos hist() parametrui labels priskyrus reikšmę TRUE, dažnių reikšmes galima užrašyti ant stulpelių viršaus. Sugalvokite, kaip, naudojant funkciją text(), tuos pačius dažnius būtų galima užrašyti stulpelio viduryje.
Naudojant planetų skersmens ir tankio duomenis, sudarykite grafiką, kuriame vietoje planetas atitinkančių taškų būtų pavaizduotas planetos pavadinimas.
Naudojant infliacijos ir nedarbo lygio duomenų lentelę d, nubraižykite 2013 metų infliacijos ir nedarbo lygio sklaidos diagramą. Greta taškų užrašykite šalies pavadinimą. Apatinėje grafiko paraštėje užrašykite infliacijos lygio vidurkį, kuris turi būti apskaičiuojamas automatiškai.
Koordinačių tinklelis ant jau nubraižyto grafiko uždedamas naudojant f-ją grid().
| Argumentas | Reikšmė |
|---|---|
nx |
tinklelio langelių skaičius ant \(Ox\) ašies |
ny |
tinklelio langelių skaičius ant \(Oy\) ašies |
col |
tinklelio linijų spalva |
lty |
tinklelio linijų tipas |
lwd |
tinklelio linijų storis |
Pagal nutylėjimą parametrų nx ir ny reikšmės yra NULL, todėl tinklelio linijos sutampa su ašių padalijimo taškais.
Jeigu parametrui nx arba ny priskiriama NA reikšmė, tinklelio linijos atitinkama kyrptimi nebraižomos.
Funkcijos grid() galimybės gan ribotos, todėl tinklelio braižymui galima naudoti funkciją abline(). Pvz., nubraižysime sinusoidės grafiką, kuriame \(Ox\) ašies sudalinimo taškai kas \(\pi/2\), o tinklelio linijos dvigubai tankesnės – kas \(\pi/4\).
Aukšto lygio grafinės funkcijos (pvz. plot(), curve()) ašis formuoja automatiškai, tačiau kartais jas reikia perbraižyti: pakeisti padalas, etiketes ar net nupiešti papildomą ašį. Tam skirta žemo lygio funkcija axis().
| Argumentas | Reikšmė |
|---|---|
side |
ašies pozicija: 1 - apačioje, 2 - kairėje, 3 -viršuje, 4 - dešinėje |
at |
padalinimo taškų vektorius |
labels |
loginis arba taškų padalinimo vektorius |
tick |
rodyti (TRUE) / slėpti (FALSE) pačius „brūkšnelius” |
line |
vertikalios paraštės eilutės numeris |
pos |
koordinatė, kurioje kertama kita ašis (pvz. pos = 0) |
lty, lwd, col
|
linijos tipas, storis, spalva |
Pradinę grafiko ašį galima uždrausti braižyti su xaxt = "n" ar yaxt = "n" (arba abi ašis: axes = FALSE), o vėliau susikurti savąją su axis().
curve(sin, -pi, pi, axes = FALSE)
Standartines ašis galima atstatyti tiesiog nurodžius ašies poziciją.

Ašies padalinimo taškai nurodomi su parametru at.
Vietoj tikrųjų padalinimo taškų reikšmių (realiųjų skaičių), galima nurodyti taškų žymes per \(\pi\) simbolį, priskiriant labels parametrui reikšmę, gautą taikant funkciją expression().
curve(sin, -pi, pi, frame = FALSE, xaxt = "n")
Ox.taskai <- seq(-pi, pi, by = pi/2)
Ox.pav <- expression(-pi, -pi/2, 0, pi/2, pi)
axis(1, at = Ox.taskai, labels = Ox.pav)
Toje pačioje pozicijoje galima turėti kelias ašis. Kiekviena ašis gali turėti savo padalinimo taškus ir jų pavadinimus.

Dar vienas pavyzdys, kaip toje pačioje pozicijoje atidedamos 2 skirtingos ašys. Viena iš jų padalina ašį į intervalus, o kita – tų intervalų viduryje uždeda jų pavadinimus. Todėl pirmoje ašyje nerašomi sudalinimo taškai, o antroje nėra ašies linijos.

Paprastai ašys braižomos už funkcijos grafiko ar kitokios diagramos ribų, t.y. paraštėse. Paraštės eilutės, kurioje atidedama ašis, numerį nurodome naudojant parametrą line. Pagal nutylėjimą ašis braižoma nulinėje eilutėje.
Ašies poziciją grafike galima nurodyti užrašant kitos ašies kirtimo koordinatę. Tam naudojamas parametras pos.
Žymes ties ašių padalinimo taškais galima stumti į kairę arba į dešinę, naudojant parametrą hadj. Pagal nutylėjimą parametro reikšmė lygi 0.5, reiškianti, kad žymės centruojamos ties padalinimo taškais. Didinant šią reikšmę, žymės stumiamos kairėn.
Jei žymes reikia pakelti arba nuleisti žemiau ties padalinimo taškais, naudojamas parametras padj, kurio reikšmė pagal nutylėjima lygi 0. Didinant reikšmę, žymė stumiama žemyn.
Svarbus skirtumas naudojant šiuos du parametrus - horizontalus postūmis atliekamas visoms žymėms, tuo tarpu vertikalus postūmis kiekvienai žymei gali būti skirtingas. Todėl parametrui hadj reikia nurodyti tik vieną skaičių, o padj - postumių reikšmių vektorių.
Pavyzdžiui, pastumsime tik pirmosios žymės reikšmę į viršų tam, kad ji nepersidengtų su pačia funkcijos kreive.
Nubraižykite funkcijos \(y = sin(x)\) grafiką intervale \([-\pi, \pi]\). Uždėkite dvi \(Ox\) ašis: apačioje sugraduota kas \(\pi/2\), o viršuje kas vienetą.
Nubraižykite lentelės airquality kintamojo Temp kitimo laike grafiką, kuris turėtų dvi \(Oy\) ašis. Vienoje iš jų temperatûra matuojama Farenheito skalėje, kitoje – pagal Celsijų.
Nubraižykite lentelės airquality kintamojo Temp kitimo laike grafiką. Ašies \(Ox\) sudalinimo taškai turi sutapti su vieno mėnesio pradžia ir kito pabaiga. Ties sudalinimo taškais ant grafiko nubraižykite vertikalias pilkas linijas, o tarpuose tarp padalinimo taškų užrašykite atitinkamo mėnesio pavadinimą.
Nubraižyto grafiko ašių padaliniomo taškus galima gauti naudojant f-ją axTicks(). Funkcijos rezultatas yra padalinimo taškų koordinačių vektorius.
| Argumentas | Reikšmė |
|---|---|
side |
ašies pozicija: 1 - apačia, 2 - kairė, 3 - viršus, 4 - dešinė |
axp |
ašies ribų ir intervalų skačiaus vektorius c(min, max, k)
|
usr |
grafikų ribų vektorus c(xmin, xmax, ymin, ymax)
|
log |
jei TRUE, ašis nurodomo logaritminėje skalėje |
Pavyzdžiui, nubraižysime funkcijos \(y = \sin x\) grafiką be ašių ir nustatysime, kam būtų lygios ašies \(Ox\) sudalijimo taškų koordinatės, jei ašis būtų braižoma.
Ašies padalinimo taškų vektorius priklauso nuo paties grafiko. Norint, kad rezultatas nepriklausytų nuo grafiko, reikia nurodyti visų parametrų reikšmes. Pvz., rasime intervalo nuo 5 iki 20, padalinimo į 6 lygias dalis, taškų koordinates.
Negriežtam intervalo padalinimui lygiomis dalimis naudojama funkcija axisTicks(). Funkcijos rezultatas yra intervalo sudalinimo lygiomis dalimis taškų vektorius. Pradinio intervalio galai ir padalinimo taškų skaičius gali būti automatiškai pakoreguojamas tam, kad būtų išlaikomas tam tikra prasme „gražus“ padalinimas.
| Argumentas | Reikšmė |
|---|---|
usr |
grafiko vienos ašies ribų vektorius c(min, max)
|
log |
jei TRUE, ašis nurodomo logaritminėje skalėje |
axp |
ašies ribų ir intervalų skačiaus vektorius c(min, max, k)
|
nint |
pageidaujamas intervalų dalių skaičius |
Pavyzdžiui, ligiomis dalimis padalinsime intervalą nuo 5 iki 20. Intervalų skaičius parenkamas automatiškai, jeigu kitaip nenurodoma.
Matome, jog funkcijos rezultatas nesikeičia, kai nedaug pakeičiami intervalo galai.
Nurodžius intervalo dalių skaičių, į pageidavimus atsižvelgiama tik iš dalies.
axisTicks(usr = c(5, 20), log = FALSE, nint = 4)
#> [1] 5 10 15 20
axisTicks(usr = c(5, 20), log = FALSE, nint = 5)
#> [1] 6 8 10 12 14 16 18 20
axisTicks(usr = c(5, 20), log = FALSE, nint = 6)
#> [1] 6 8 10 12 14 16 18 20
axisTicks(usr = c(5, 20), log = FALSE, nint = 7)
#> [1] 6 8 10 12 14 16 18 20