Esimene näide - automaatsetest telgedest lahtisaamineSoovides lisada graafikule eripärast telge, tuleb esmalt lahti saada automaatselt pildile lisatavatest telgedest. Selleks on kaks võimalust: axes=FALSE parameetri kasutamine graafiku joonistamisel või xaxt="n", yaxt="n" parameetrite tarvitamine.# Kasutatavate andmete tekitamine tunnusX=rnorm(100) tunnusY=rnorm(100)+0.5*tunnusX # jagame ekraani kuue minigraafiku vahel, # muudame ka veidi telgede jaoks jäetavat # vaba ruumi. par(mfrow=c(3,2), mar=c(4,4,4,1)) # Joonistame graafikud plot(tunnusX,tunnusY, main="Standard") plot(tunnusX,tunnusY, bty="n", main='bty="n"') plot(tunnusX,tunnusY, las=2, main='las=2') plot(tunnusX,tunnusY, axes=FALSE, main="axes=FALSE") plot(tunnusX,tunnusY, las=3, main='las=3') plot(tunnusX,tunnusY, xaxt="n", yaxt="n", xlab="", ylab="", main='xaxt="n", yaxt="n", \n xlab="", ylab=""') |
|
| | |
Teine näide - jaotismärkide muutmineTelje lisamisel axis-käsuga on võimalik öelda, kuhu tõmmata jaotismärgid (tickmarks). Pane lisaks tähele joonise külgede nummerdamist:axis(1, ... - joonistab x-telje joonise alla; axis(2, ... - joonistab y-telje joonisest vasakule; axis(3, ... - joonistab x-telje joonise kohale; axis(4, ... - joonistab y-telje joonisest paremale.
# Takitame algandmed;
tunnusX=rnorm(100)
tunnusY=4+rnorm(100)+0.5*tunnusX
# Joonistame graafiku, ilma telgedeta (axes=FALSE!!!)
plot(tunnusX, sqrt(tunnusY), pch=16, col="firebrick4",
axes=FALSE, xlim=c(-2,2), ylim=c(0,3),
main="Kuidas muuta jaotismärke", ylab="")
# lisame teljed alla (1) ja paremale (4):
axis(1, at=c(-2,-1,0.5,1,2),
labels=c(-2,0,"pisike",1,"suur"), cex.axis=0.75)
axis(4, at=sqrt(seq(0,9,1)) , labels=seq(0,9,1),
cex.axis=0.7, las=2, col="darkred", col.axis="red")
# Lisame Y-teljele tähistuse
# (2.5 rida graafiku servast eemale):
mtext("tunnus Y", 4, line=2.5)
# Tõmbame abijooned ebatüüpiliste jaotusmärkide järgi:
abline(v=c(-2,-1,0.5,1,2), h=sqrt(seq(0,9,1)),
lty=2, col="gray90")
|
|
| | |
Ühised teljedVahel soovime, et mitu graafikut kasutaksid samu telgi. Alljärgnevalt väike näide sellest, kuidas sellist mõistlikku soovi saaks täita.
# Jagame ekraani 9 graafiku jaoks, iga graafiku
# servast tühjaks jäetava ala teeme väikseks (mar=)
# kuid kõigi graafikute ümber jätame vaba ruumi (oma=)
par(mfrow=c(3,3), mar=c(0.5,0.5,0.5,0.5), oma=c(3,3,6,3))
# Joonistame tsüklis graafikud
x=seq(0.001,0.999,0.001)
for (shape1 in c(0.5, 1, 4)){
for (shape2 in c(0.5, 1, 4)){
y=dbeta(x,shape1,shape2)
plot(x,y, type="l", xlim=c(0,1), ylim=c(0,6),
lwd=2, xaxt="n", yaxt="n")
polygon(c(0.001,x,0.999,0),c(0,y,0,0),
type="l", density=25)
# Teljed joonistame joonise väliskülgedele (outer=TRUE)!!
axis(1,c(0, 0.25,0.5,0.75,1), outer=TRUE)
axis(2,0:6, outer=TRUE)
}}
# Lisame selgitavaid tekste
mtext("shape2 = 0.5", 3, outer=TRUE, at=0.15)
mtext("shape2 = 1", 3, outer=TRUE, at=0.5)
mtext("shape2 = 4", 3, outer=TRUE, at=0.85)
mtext("shape1 = 4", 4, outer=TRUE, at=0.15)
mtext("shape1 = 1", 4, outer=TRUE, at=0.5)
mtext("shape1 = 0.5", 4, outer=TRUE, at=0.85)
# Lisame suure tiitli kõigile joonistele (outer=TRUE)
title("Beetajaotuse tihedusfunktsioone", outer=TRUE,
cex.main=1.5)
|
|
| | |
Telgedele ruumi jätmine (algus)Joonisele telgesid lisades või eemaldades tekib sageli vajadus kas vähendada või suurendada joonise äärealadele jäetavat tühja ruumi. Seda on võimalik teha kas par(mar=c(alla, vasakule, üles, paremale)) käsu abil (ühe joonise korral) või par(oma=c(alla, vasakule, üles, paremale)) käsku tarvitades (kui jooniseid on palju ning soovime jätta vaba ruumi graafikute klumbi servadesse. |
|
| | |
Telgedele ruumi jätmine - näide
# algandmete genereerimine;
x1=runif(100,0,10); x2=runif(30,6,10)
y1=0.5*x1+rnorm(100)+0.12*x1*x1;
y2=-10+(x2-6)+(x2-6)^2+rnorm(30)
x=c(x1,x2); y=c(y1,y2)
varv=rep(1:2,c(100,30))
# 2x2=4 graafikut, osad neist üsna tihedalt koos.
# oma= käsku kasutades jätame ruumi ühise tiitli tarvis.
par(mfrow=c(2,2), mar=c(0,4,3,0), oma=c(0,0,3,0))
# Esimene graafik (ülemine vasakpoolne)
plot(x,y, pch=21,
col=c("antiquewhite4","darkgoldenrod")[varv],
bg=c("antiquewhite","darkgoldenrod1")[varv],
lwd=2, cex=1.75, xlim=c(0,10), ylim=c(-5,20),
xaxt="n", main="Algpilt")
# Teine graafik (ülemine parempoolne)
par(mar=c(0,0,3,4))
plot(10-x,y, pch=21,
col=c("antiquewhite4","darkgoldenrod")[varv],
bg=c("antiquewhite","darkgoldenrod1")[varv],
lwd=2, cex=1.75, xlim=c(0,10), ylim=c(-5,20),
yaxt="n", xaxt="n", main="Peegeldus")
# Kolmas graafik (alumine vasakpoolne)
par(mar=c(4,4,0,0))
plot(x,15-y, pch=21,
col=c("antiquewhite4","darkgoldenrod")[varv],
bg=c("antiquewhite","darkgoldenrod1")[varv],
lwd=2, cex=1.75, xlim=c(0,10), ylim=c(-5,20), yaxt="n")
# Vajab eraldi axis käsku, sest y-telje numbrid tagurpidi!
axis(2, seq(-5,20,5), labels=15-seq(-5,20,5))
# Alumine parempoolne
par(mar=c(4,0,0,4))
plot(10-x,15-y, pch=21,
col=c("antiquewhite4","darkgoldenrod")[varv],
bg=c("antiquewhite","darkgoldenrod1")[varv],
lwd=2, cex=1.75, xlim=c(0,10), ylim=c(-5,20),
yaxt="n", xaxt="n")
axis(1, seq(0,10,2), labels=10-seq(0,10,2))
# Lisame mõned ilustavad tekstid!
mtext("Peegeldus",4)
title(main="Peegeldusi", outer=TRUE)
|
|