Java Mailing List Archive

http://www.r-help.com/

Home » Home (12/2007) » R Help for Statistical Computing »

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

Scot W McNary

2005-07-11



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@(protected)

______________________________________________
R-help@(protected)
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
©2008 r-help.com - Jax Systems, LLC, U.S.A.