[R] trellis margin sizes in absolute units

Martin Ivanov tramni at abv.bg
Thu Jul 12 18:09:32 CEST 2012

 Dear R users,

I have a lot of experience with traditional R graphics, but I decided to turn to trellis as
it was recommended for spatial graphs by the sp package. In traditional R graphics
I always first set the size of the device region absolute units (e.g.  mm) and then I
firmly fix the inner margins with mai and the outer margins with oma also in absolute units.
What is left from the device region is for the plot region. That is my general idea.

My question is, is it possible to achieve that full control with trellis graphics? I have tried 
with the *.paddings parameters, but it seems to me that the margins are still larger than I have set them.
Here is my example code: (mp is a SpatialPixelsDataFrame)

xlim <- c(.96*bbox(mp)[1, 1], 1.02*bbox(mp)[1, 2]);
ylim <- c(.992*bbox(mp)[2, 1], 1.005*bbox(mp)[2, 2]);
b <- 1; t <- 2; # b, t : should be bottom and top figure margins
l <- 1; r <- 6; # l, r : should be left and right figure margins
asp <- mapasp(data=mp, xlim=xlim, ylim=ylim);
# I have set the width of the device region as w millimetres and here I calculate 
# its height, taking care of the aspect ratio
h <- b + t + asp*(w - (l + r));

postscript(output, onefile=FALSE, paper="special", width=w/25.4, height=h/25.4, horizontal=FALSE, fonts=c("Times"), print.it=FALSE, colormodel="rgb", pointsize=12);

# here I set all the possible paddings to make sure that all other margins are 0:
trellis.par.set(layout.widths=list(left.padding=l, right.padding=r, key.ylab.padding = 0,
ylab.axis.padding = 0, axis.key.padding = 0, units="mm"),
layout.heights=list(bottom.padding=b, top.padding=t, main.key.padding = 0, key.axis.padding = 0, axis.xlab.padding = 0,
xlab.key.padding = 0, key.sub.padding = 0, units="mm"),
axis.components=list(bottom=list(pad1=.8), left=list(pad1=.8)));

But still, the resulting margins are larger than I expect and to achieve the desired effect I have to set some parameters to negative numbers. So I guess there are some other graphical parameters that come into play, about which I do not know. 
Which margins are these *.padding parameters controlling: the outer (device) or the inner (figure) margins?

Any suggestions will be appreciated.


Гражданска отговорност – Цените на компаниите

More information about the R-help mailing list