# # mfrow, mfcol võimaluste demonstreerimine # # Viimati muudetud - 18. juulil 2005 # Koostanud: Märt Möls # # Millega png-pilte vaadata vaataja="C:\\Program Files\\Mozilla Firefox\\firefox.exe" # Kuhu pildfailid salvestada tee="F:\\kursus\\R\\temp\\komb\\" algus=function(pilt, xs, ys){ assign("teenimi", paste(tee,pilt,sep=""), env=.GlobalEnv) assign("teenimi2", paste('"',vaataja,'" ',tee,pilt,sep=""), env=.GlobalEnv) png(filename = teenimi, width = xs, height = ys, pointsize = 12, bg = "white") } algus("pilt3.png", 500, 600) # Algandmete genereerimine: x=rchisq(500, df=3) # Ekraani jagamine kaheks par(mfrow=c(2,1)) # Jätame ruumi ühisele tiitlile, muudame veidi kirja suurust par(oma=c(1,1,4,1)) # Joonistame kaks graafikut plot(density(x), xlim=c(0,15), main="tihedusfunktsioon") plot(ecdf(x), xlim=c(0,15), main="jaotusfunktsioon") # Lisame tiitli title("Tihedus- ja jaotusfunktsiooni hinnangud", outer=TRUE) dev.off() system(teenimi2) s=1.5 algus("pilt10.png", 300*s, 225*s) plot(c(0,1),c(0,1), col="white", type="n", xaxt="n", yaxt="n", xlab="", ylab="", bty="n") title("par(mfrow=c(2,3)) \n Graafikute joonistamise järjekord") ax=seq(0,1,length=4) ay=seq(0,1,length=3) for (i in 1:(length(ax)-1)){ for (j in 1:(length(ay)-1)){ rect(ax[i], ay[j], ax[i+1]-0.1, ay[j+1]-0.1, border="black", col="gray95")}} for (i in 1:(length(ax)-2)){ for (j in 1:(length(ay)-1)){ arrows((ax[i]+ax[i+1])/2, (ay[j]+ay[j+1])/2-0.05, (ax[i+1]+ax[i+2])/2-0.05, (ay[j]+ay[j+1])/2-0.05, code=2, length=0.25) }} arrows((ax[3]+ax[4])/2, (ay[2]+ay[3])/2-0.05, (ax[1]+ax[2])/2-0.05, (ay[1]+ay[2])/2-0.05, code=2, length=0.25, angle=20) dev.off() system(teenimi2) algus("pilt11.png", 300*s, 225*s) plot(c(0,1),c(0,1), col="white", type="n", xaxt="n", yaxt="n", xlab="", ylab="", bty="n") title("par(mfcol=c(2,3)) \n Graafikute joonistamise järjekord") ax=seq(0,1,length=4) ay=seq(0,1,length=3) for (i in 1:(length(ax)-1)){ for (j in 1:(length(ay)-1)){ rect(ax[i], ay[j], ax[i+1]-0.1, ay[j+1]-0.1, border="black", col="gray95")}} for (i in 1:(length(ax)-1)){ for (j in 1:(length(ay)-2)){ arrows((ax[i]+ax[i+1])/2-0.05, (ay[j]+ay[j+1])/2-0.05, (ax[i]+ax[i+1])/2-0.05, (ay[j+1]+ay[j+2])/2-0.05, code=1, length=0.25) }} for (i in 1:(length(ax)-2)){ arrows((ax[i]+ax[i+1])/2-0.025, (ay[1]+ay[2])/2-0.05, (ax[i+1]+ax[i+2])/2-0.075, (ay[2]+ay[3])/2-0.05, code=2, length=0.25, angle=20) } dev.off() system(teenimi2) s=2 algus("pilt12.png", 300*s, 225*s) x=rnorm(100) # Joonistamine # Jagame ekraani 6 osaks - 2 rida ja 3 veergu graafikuid par(mfrow=c(2,3)) # Jätame 6 pildi ühise tiitli jaoks rohkem ruumi par(oma=c(1,1,3,1)) # Joonistame kuus pilti plot(x, bg=rgb(0,0,runif(100)), cex=2, pch=21, col="blue", main="plot") hist(x, col=heat.colors(10),main="hist") barplot(table(cut(x, breaks=5)), col=terrain.colors(9), main="barplot") pie(table(cut(x, breaks=5)), main="pie", labels=NA) qqnorm(x, main="qqnorm"); qqline(x) plot(ecdf(x)) title("Kuus pilti - par(mfrow(2,3))", outer=TRUE, cex.main=1.75) dev.off() system(teenimi2) algus("pilt13.png", 500, 500) # Joonistamine # Jagame ekraani 9 osaks - 3 rida ja 3 veergu graafikuid par(mfrow=c(3,3)) # Vähendame ühe pildi ümber jäetavat vaba ruumi par(mar=c(3,3,1,1)) # Joonistame üheksa pilti for (i in 1:9){ x=rnorm(40) hist(x, col=heat.colors(10), main="", xlim=c(-3,3)) if (i==5) meelesx=x } # Täiendame 2-rea 3. veeru pilti kakukesega: par(mfg=c(2,3)) pie(1:10, col=terrain.colors(10), labels=NA) dev.off() system(teenimi2)