|
Sagedus- ja jaotustabeli esitamine joonisena
Nominaalse, järjestustunnuse või diskreetse tunnuse jaotuse visualiseerimine
Tulpdiagramm ja ringdiagramm (kakuke)
| | |
Tulpdiagramm
Lihtne tulpdiagramm
Tulpdiagrammi joonistatakse R'is barplot käsu abil. Tavaliselt on barplot-käsu argumendiks
kas sagedus- või jaotustabel. Kui soovid alljärgnevatel joonistel näha y-teljel väärtuste osakaalu protsentides, pead
barplot-käsu argumendina kasutama sagedustabeli table(tervis) asemel (protsentides esitatud) jaotustabelit prop.table(table(tervis))*100. Muidugi tuleb siis ka y-telje tähistust sobivalt muuta (sagedusest protsendiks).
Joonistame tulpdiagrammi tunnusele tervis.
|
 | |
barplot(table(tervis))
|
Esmane vormistus
Vajalik on tähistada teljed korrektselt, soovi korral võib lisada joonisele ka pealkirja ja muuta
tulpade värvi. Telgede tähistusi saab muuta lisaparameetrite xlab= ja ylab= abil,
joonisele saab panna pealkirja muutes parameetri main= väärtust, värve saab määrata parameetri col= abil.
R lubab värvi valida väga mitmel erineval viisil, nende erinevate võimalustega tutvumiseks vaata siia.
|
 | |
barplot(table(tervis),
xlab="Tervis", ylab="Sagedus",
main="Tulpdiagramm",
col=c("steelblue", "skyblue", "steelblue3",
"midnightblue"))
|
Väärtuste dekodeerimine, viirutatud tulbad
Tunnus tervis ehk tudengi enesehinnang oma tervisele on andmestikus kodeeritud kujul:
1 - väga hea
2 - hea
3 - keskmine
4 - halb
Graafiku tegemisel oleks viisakas, kui kasutaksime kodeeritud väärtuste asemel paremini arusaadavaid tähendusi.
Selle saavutamiseks anname peame R'i informeerima tunnuse kodeeritud väärtuste tähendustest, seda saame teha factor-käsu abil. Põhjalikumat selgitust vaata siit.
Kui graafik peab nägema kena ka mustvalgel printeril väljatrükitult, võib tulpi erineva kaldenurga ja tihedusega viirutada.
Viirutuse kaldenurka saab muuta parameetri angle= abil, viirutuse tihedust aga parameetri density= abil.
|
|
# Loome dekodeeritud faktortunnuse tervisF
tervisF=factor(tervis, levels=1:4,
c("väga hea", "hea", "keskmine", "halb"))
# Kasutades vastloodud tunnust tervisF saame arusaamatute koodide
# asemel joonisele tunnuse väärtuste tegelikud tähendused
barplot(table(tervisF), xlab="Tervis", ylab="Sagedus",
density=c(10, 20, 10, 30),angle=c(45,45,130, 130))
|
|
|
Referentsjooned, protsentuaalsed osakaalud tulpade peal.
Horisontaalseid refentsjooni saab olemasolevale graafikule lisada käsuga
abline(h=...), soovi korral saab lisaks määrata referentsjoonte värvi col= parameetri abil (uuri võimalusi värvi valida siit) ja referentsjoone tüüpi (kas pidev joon, punktiirjoon, katkendjoon jne. Vaata ka seda).
Probleemiks referentsjoontega on, et neid saab joonistada juba olemasolevale graafikule, paraku kipuvad nad siis ka jooksma üle graafikul olevatest elementidest, näiteks jäävad nende alla tulpdiagrammi tulbad. Kui soovime saada siiski vastupidist pilti, kus referentsjooned on all ja tulpdiagrammi tulbad nende peal, peame peale referntsjoonte joonistamist tulpdiagrammi uuesti joonistama (kasutades nüüd parameetrit add=TRUE, mille kasutamise korral joonistatakse tulpdiagrammi juba olemasolevale joonisele peale).
Samuti on võimalik salvestada tulpdiagrammi tulpade keskpunktide asukohta. Salvestatud väärtuseid saame kasutada mõne meelepärase teksti lisamiseks joonisele - näiteks võime kirjutada tulpade kohale iga väärtuse esinemisprotsendi.
Lisaks oleme muutnud väärtuste esitamiskuju telgedel kasutades parameetrit las=1. Parameetri las= abil on võimalik pöörata telgedele kirjutatavaid väärtuseid telgedega ristiolevaks, horisontaalsuunaliseks, vertikaalsuunaliseks jne.
|
|
# Loome dekodeeritud faktortunnuse tervisF
tervisF=factor(tervis, levels=1:4,
c("väga hea", "hea", "keskmine", "halb"))
# Salvestame joonistamiseks kasutatava sagedustabeli
tabel=table(tervisF)
barplot(tabel, xlab="Tervis", ylab="Sagedus",
col=c("steelblue", "skyblue", "steelblue3",
"midnightblue"), las=1, ylim=c(0,500) )
# Lisame helehallid referntsjooned
abline(h=seq(100, 500, 100), lty=2, col=gray(0.7))
# Joonistame tulpdiagrammi uuesti referntsjoonte peale.
# Salvestame tulpade asukohad vektorisse "keskkohad".
keskkohad=barplot(tabel, add=TRUE,
xlab="Tervis", ylab="Sagedus",
col=c("steelblue", "skyblue", "steelblue3",
"midnightblue"), las=1, ylim=c(0,500) )
# Kirjutame väärtuste protsentuaalsed osakaalud tulpade kohale
kirjad=paste(round(prop.table(tabel)*100), "%", sep="")
text(keskkohad, tabel+10, kirjad, adj=c(0.5,0))
|
|
|
Üldiselt saab usaldusintervalli protsendile leida binom.test käsu abil, vaata lähemalt
siit.
Leitud usaldusintervalle saab graafikule lisada näiteks arrows-käske kasutades.
Alljärgnevalt loome aga uue funktsiooni, mis joonistab tulpdiagrammi koos usaldusintervallidega ja
kasutame seejärel loodud uut funktsiooni, uut käsku R'is, tulpdia, meile meelepärase
joonise tegemiseks.
|
|
# Loome uue käsu (funktsiooni) tulpdia
tulpdia=function(tunnus, ...){
alpha=0.05
x=table(tunnus); n=sum(x)
al=qbeta(alpha/2, x, n - x+1)
yl=qbeta(1-alpha/2, x+1, n - x)
a=barplot(prop.table(x)*100, ylab="Protsent (%)",
ylim=c(0, max(yl*100)), ...)
arrows(a, al*100, a, yl*100, code=3,
length=0.1, angle=90)
}
# Loome dekodeeritud faktortunnuse tervisF.
# Kui tervisF on juba varasemast olemas, siis pole järgnevat käsku vaja.
tervisF=factor(tervis, levels=1:4,
c("väga hea", "hea", "keskmine", "halb"))
# Kasutame funktsiooni tulpdia soovitud joonise tegemiseks.
tulpdia(tervisF, col=heat.colors(4),
main="Tervisehinnangute jaotus
koos 95%-usaldusintervalliga")
|
|
|
Lihtne kakuke
Kakukest saab R'is küpsetada pie käsu abil, käsu argumendiks sobib sagedustabel:
pie(table(tervis))
|
Garneeringuga kakuke
Alljärgnevas näites on muudetud joonise värve (parameetrit col= kasutades), on eelnevalt loodud faktortunnus tervisF (selleks et sagedustabelis/joonisel oleksid
tunnuse väärtused
esitatud arusaadaval kujul, factor-käsu selgitust ja täiendavaid näiteid vaata siit).
Päris hea kakukese oleksime saanud ka kasutades kõigest käsku pie(table(tervisF)), aga antud juhul
soovisime lisada väärtustele ka nende protsentuaalse osakaalu valimis. Selleks leidsime esmalt protsentuaalsete osakaalude tabeli käsuga prop.table(tabel)*100 ja ümbritsesime leitud protsentuaalsed osakaalud sulgude ja protsendimärgiga paste-käsu abil (vaata paste-käsu kasutusnäiteid siit).
tervisF=factor(tervis, levels=1:4, c("väga hea", "hea", "keskmine", "halb"))
tabel=table(tervisF)
selgitav_tekst=paste(names(tabel), "\n(",round(prop.table(tabel)*100,1),"%)")
pie(tabel, labels=selgitav_tekst,
col=c("#00FF00", "#55AA00", "#AA5500", "#FF0000"))
|
| |