[R] resizing a plot area when using mfrow

Marc Schwartz MSchwartz at medanalytics.com
Mon Feb 16 20:53:34 CET 2004


On Mon, 2004-02-16 at 12:31, Rajarshi Guha wrote:
> Hi,
>   I'm trying to plot two graphs next to each other using the plot()
> command. I've used 
> 
> par(mfrow=c(1,2),pty='s')
> 
> to get the plots on 1 row.
> However what happens is that I get a large plot area with the 2 plots in
> the center of it, so there is a large amount of white space above and
> below the plots.
> 
> Currently I take the EPS and then cut out the white boundaries in a
> image manipulation program. 
> 
> Is there someway I can specify in R that the plot area should resize to
> just enclose the row of plots without generating large areas of
> whitespace?
> 
> Thanks,


One approach is to adjust the page size that you use for the EPS output,
since you are forcing a square plot region. A rough guess might be to
use a page width that is twice the page height. Be sure to use 'paper =
"special"' to adjust the EPS bounding box.


# Specify the EPS output
postscript(file = "RPlot.eps", onefile = TRUE, paper = "special",
           width = 10, height = 5, horizontal = FALSE)

# Set 1 row, 2 cols, square plot region
par(mfrow=c(1,2), pty = "s")

# Generate two plots
plot(1:5)
plot(1:10)

# Close postscript device
dev.off()

Take a look at RPlot.eps and see if this is what you require.

HTH,

Marc Schwartz




More information about the R-help mailing list