Telgede modifitseerimine ja lisamine


Olemasolevale graafikule saab telge lisada käsuga axis; selgitava teksti teljele lisamiseks saab kasutada käsku mtext; telgedele tarvis saab eraldada täiendavat ruumi käsuga par(mar=c(alla,vasakule,üles,paremale)).

Esimene näide - automaatsetest telgedest lahtisaamine

Soovides 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 muutmine

Telje 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 teljed

Vahel 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)


   


Vaata lisaks: