[R] small first graph of par(3,2), other 5 are correct

From: Scot W McNary <smcnary_at_charm.net>
Date: Tue 12 Jul 2005 - 02:43:37 EST

Hi,

I'm trying to produce 6 graphs on a single page using code I've borrowed from an example by Paul Murrell:

(http://www.stat.auckland.ac.nz/~paul/RGraphics/custombase-xmastree.R).

It involves placing 6 horizontal barplots on one page and adding common labels.

The problem is the first graph in my figure (the one in the (1,1) position) is smaller than the other 5. A toy example is included below.

When I compare the par() options set after producing each graph, all of the parameters that change look like what I would expect:

> names(after.g1[after.g1%in%after.g2=="FALSE"])
[1] "fig" "mai" "mar" "mfg" "plt"

> what.chgd<-names(after.g1[after.g1%in%after.g2=="FALSE"])
>
> after.g1[what.chgd]

$fig
[1] 0.0000000 0.5000000 0.6666667 1.0000000

$mai
[1] 0.0309375 0.0618750 0.3093750 0.3093750

$mar
[1] 0.5 1.0 5.0 5.0

$mfg
[1] 1 1 3 2

$plt
[1] 0.02357143 0.88214285 0.01437097 0.85629032

>
> after.g2[what.chgd]
$fig
[1] 0.5000000 1.0000000 0.6666667 1.0000000

$mai
[1] 0.0309375 0.3093750 0.3093750 0.0618750

$mar
[1] 0.5 5.0 5.0 1.0

$mfg
[1] 1 2 3 2

$plt
[1] 0.11785715 0.97642857 0.01437097 0.85629032

One other aspect of this is that the problem does not occur if after I create all 6 graphs once, I rerun the code again, but omit only the "par(mfrow=c(3,2))" statement. If I don't reset par(), then the first graph is then the identical size of the other five.

Up to now I've gotten around this by simply running the code twice, omitting the "par(mfrow=c(3,2))" the second time and printing the result. Now, however, I'm sending the graphs to a pdf file and must set the "par(mfrow=c(3,2))" after opening the pdf device, so the problem shows up with each time.

Any help on fixing this problem so that all 6 graphs appear the same size on the figure would be most welcome.

Thanks,

Scot

####

Here is the toy example that shows the layout and plots in my figure:

par(mfrow=c(3,2))

groups<-LETTERS[1:5]

### for graph 1 ###

# data
leftci <- c(1:5)
rightci <- c(2:6)

# left column graph so:
par(mar=c(0.5, 1, 5, 5))
# right column graph so:
#par(mar=c(0.5, 5, 5, 1))

plot.new()
title(main = "Graph 1")
plot.window(xlim=c(0, 8), ylim=c(-1.5, 5.5))

ticks <- seq(0, 8, 1)
y <- 1:5 # how many spaces on y axis: 1 for each group h <- 0.2 # height? a function of y?

segments(0, y, 8, y, lty="dotted") # dotted segments on which bar lies (like a grid)
rect(leftci, y-h, rightci, y+h, col="dark grey") #mtext(groups, at=y, adj=1, side=2, las=2, cex=.75) par(cex.axis=1.0, mex=0.5)
axis(1, at=ticks, labels=abs(ticks), pos=0, )

box("inner", col="grey")

after.g1<-show(par())

### for graph 2 ###

# data:
leftci <- c(1:5)
rightci <- c(2:6)

# left column graph so:
#par(mar=c(0.5, 1, 5, 5))
# right column graph so:

par(mar=c(0.5, 5, 5, 1))

plot.new()
title(main = "Graph 2")

plot.window(xlim=c(0, 8), ylim=c(-1.5, 5.5))

ticks <- seq(0, 8, 1)
y <- 1:5 # how many spaces on y axis: 1 for each group h <- 0.2 # height? a function of y?

segments(0, y, 8, y, lty="dotted") # dotted segments on which bar lies (like a grid)
rect(leftci, y-h, rightci, y+h, col="dark grey") mtext(groups, at=y, adj=.5, side=2, las=2, cex=.75, line = 5) # this line only for right column graphs
par(cex.axis=1.0, mex=0.5)
axis(1, at=ticks, labels=abs(ticks), pos=0, )

box("inner", col="grey")

# end graph 2

after.g2<-show(par())

### graph 3###

# data
leftci <- c(1:5)
rightci <- c(2:6)

# left column graph so:
par(mar=c(0.5, 1, 5, 5))
# right column graph so:
#par(mar=c(0.5, 5, 5, 1))

plot.new()
title(main = "Graph 3")
plot.window(xlim=c(0, 8), ylim=c(-1.5, 5.5))

ticks <- seq(0, 8, 1)
y <- 1:5 # how many spaces on y axis: 1 for each group h <- 0.2 # height? a function of y?

segments(0, y, 8, y, lty="dotted") # dotted segments on which bar lies (like a grid)
rect(leftci, y-h, rightci, y+h, col="dark grey") #mtext(groups, at=y, adj=1, side=2, las=2, cex=.75) par(cex.axis=1.0, mex=0.5)
axis(1, at=ticks, labels=abs(ticks), pos=0, )

box("inner", col="grey")

after.g3<-show(par())

### for graph 4 ###

# data:
leftci <- c(1:5)
rightci <- c(2:6)

# left column graph so:
#par(mar=c(0.5, 1, 5, 5))
# right column graph so:

par(mar=c(0.5, 5, 5, 1))

plot.new()
title(main = "Graph 4")

plot.window(xlim=c(0, 8), ylim=c(-1.5, 5.5))

ticks <- seq(0, 8, 1)
y <- 1:5 # how many spaces on y axis: 1 for each group h <- 0.2 # height? a function of y?

segments(0, y, 8, y, lty="dotted") # dotted segments on which bar lies (like a grid)
rect(leftci, y-h, rightci, y+h, col="dark grey") mtext(groups, at=y, adj=.5, side=2, las=2, cex=.75, line = 5) # this line only for right column graphs
par(cex.axis=1.0, mex=0.5)
axis(1, at=ticks, labels=abs(ticks), pos=0, )

box("inner", col="grey")

after.g4<-show(par())

# end graph 4

### graph 5###

# data
leftci <- c(1:5)
rightci <- c(2:6)

# left column graph so:
par(mar=c(0.5, 1, 5, 5))
# right column graph so:
#par(mar=c(0.5, 5, 5, 1))

plot.new()
title(main = "Graph 5")
plot.window(xlim=c(0, 8), ylim=c(-1.5, 5.5))

ticks <- seq(0, 8, 1)
y <- 1:5 # how many spaces on y axis: 1 for each group h <- 0.2 # height? a function of y?

segments(0, y, 8, y, lty="dotted") # dotted segments on which bar lies (like a grid)
rect(leftci, y-h, rightci, y+h, col="dark grey") #mtext(groups, at=y, adj=1, side=2, las=2, cex=.75) par(cex.axis=1.0, mex=0.5)
axis(1, at=ticks, labels=abs(ticks), pos=0, )

box("inner", col="grey")

after.g5<-show(par())

### for graph 6 ###

# data:
leftci <- c(1:5)
rightci <- c(2:6)

# left column graph so:
#par(mar=c(0.5, 1, 5, 5))
# right column graph so:

par(mar=c(0.5, 5, 5, 1))

plot.new()
title(main = "Graph 6")

plot.window(xlim=c(0, 8), ylim=c(-1.5, 5.5))

ticks <- seq(0, 8, 1)
y <- 1:5 # how many spaces on y axis: 1 for each group h <- 0.2 # height? a function of y?

segments(0, y, 8, y, lty="dotted") # dotted segments on which bar lies (like a grid)
rect(leftci, y-h, rightci, y+h, col="dark grey") mtext(groups, at=y, adj=.5, side=2, las=2, cex=.75, line = 5) # this line only for right column graphs
par(cex.axis=1.0, mex=0.5)
axis(1, at=ticks, labels=abs(ticks), pos=0, )

box("inner", col="grey")

after.g6<-show(par())

# end graph 6

> version

          _
platform i386-pc-mingw32

arch     i386
os       mingw32

system i386, mingw32
status
major 2
minor 1.1
year 2005
month 06
day 20
language R
--
   Scot W. McNary  email:smcnary@charm.net

______________________________________________
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Received on Tue Jul 12 02:50:18 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:33:28 EST