Dear r-helpers, I have six panels: op(par(mfrow = c(2, 3), xaxt = 'n', yaxt = 'n', pty = 's'). Each of them has a variable main = 'i', and xlab = '', ylab = '' I would like to achieve two things: (1) a common x-axis label under panel 5, and one label to the left of panels 1 and 4 (2) minimal space between the panels. I have looked for examples, and even the thorough "Les param?tres graphiques" didn't help me: I haven't been able to reduce the space between the rows of panels nearly enough. My best attempt: par(pty = 's', xaxt = 'n', yaxt = 'n', mfrow = c(2, 3), mgp = c(1, 0, 0), mar = c(1.1, 2.1, 1.1, 0.1)) _____________________________ Professor Michael Kubovy University of Virginia Department of Psychology USPS: P.O.Box 400400 Charlottesville, VA 22904-4400 Parcels: Room 102 Gilmer Hall McCormick Road Charlottesville, VA 22903 Office: B011 +1-434-982-4729 Lab: B019 +1-434-982-4751 Fax: +1-434-982-4766 WWW: http://www.people.virginia.edu/~mk9y/
This will get you started x <- rnorm(20) y <- rnorm(20) par(pty = 's', xaxt = 'n', yaxt = 'n', mfrow = c(2, 3), mgp= c(1, 0, 0), mar = c(1.1, 2.1, 1.1, 0.1)) plot(y ~ x, main=1, xlab="", ylab="y1") plot(y ~ x, main=2, xlab="", ylab="") plot(y ~ x, main=3, xlab="", ylab="") plot(y ~ x, main=4, xlab="", ylab="y4") plot(y ~ x, main=5, xlab="", ylab="", xaxt="s") plot(y ~ x, main=6, xlab="", ylab="")
I would do something like this in lattice. It defaults to something prettier and gives more control if you don't want the defaults. tmp <- data.frame(x=rnorm(120), y=rnorm(120), a=factor(rep(1:6, 20))) xyplot(y ~ x | a, data=tmp) xyplot(y ~ x | a, data=tmp, aspect=1, layout=c(3,2), scales=list(x=list(alternating=c(0,1,0)), y=list(alternating=FALSE))) Back to regular graphics. I misunderstood your request for a single y label. This comes closer. I used oma to squeeeze the two rows closer together. I used two axis(1) statements. The first puts the ticks on the border of the box. The second one puts the labels far enough away that they aren't cluttered. Similar adjustment is called for on the main title of each panel. x <- rnorm(20) y <- rnorm(20) old.par <- par(pty = 's', xaxt = 'n', yaxt = 'n', mfrow = c(2, 3), mar = c(1.1, 2.1, 1.1, 0.1), oma=c(12,2,0,2)) plot(y ~ x, main=1, xlab="", ylab="") plot(y ~ x, main=2, xlab="", ylab="") plot(y ~ x, main=3, xlab="", ylab="") plot(y ~ x, main=4, xlab="", ylab="") mtext("Y label", side=2, at=2, line=2) plot(y ~ x, main=5, xlab="", ylab="") axis(1, xaxt="s", labels=FALSE) axis(1, xaxt="s", tick=FALSE, line=1) plot(y ~ x, main=6, xlab="", ylab="") par(old.par)