[R] Plot Area Dimensions

David L Carlson dcarlson at tamu.edu
Mon Nov 19 23:04:57 CET 2012


You can also use layout() with base graphics. This
example sets up a column of 14 strips and allocates
3 strips to the top and bottom graphs and 2 strips
To the four middle graphs. Using Richard's tmp dataframe:

layout(matrix(c(1, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5,
   6, 6, 6), 14, 1))
layout.show(6)
par(mar=c(0,5,2,5))
plot(y1~x, tmp, xlab="", xaxt="n", ylab="y")
par(mar=c(0,5,0,5))
plot(y2~x, tmp, xlab="", xaxt="n", ylab="y")
plot(y3~x, tmp, xlab="", xaxt="n", ylab="y")
plot(y4~x, tmp, xlab="", xaxt="n", ylab="y")
plot(y5~x, tmp, xlab="", xaxt="n", ylab="y")
par(mar=c(4,5,0,5))
plot(y6~x, tmp, xlab="x", ylab="y")

---------------------------------------------
David L Carlson
Associate Professor of Anthropology
Texas A&M University
College Station, TX 77843-4352



> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of Richard M. Heiberger
> Sent: Monday, November 19, 2012 2:26 PM
> To: Richard James
> Cc: r-help at r-project.org
> Subject: Re: [R] Plot Area Dimensions
> 
> I think this task would be easier in lattice
> 
> library(lattice)
> xyplot(y + y + y + y + y + y ~ x, outer=TRUE, layout=c(1,6),
>           strip=FALSE, strip.left=TRUE,
>           ylab="6 copies of the Y variable",
>           main="put an interesting title here")
> 
> Six different y variables instead of six copies of the same would give
> a
> more
> interesting plot:
> 
> tmp <- data.frame(matrix(rnorm(700), 100, 7,
>                   dimnames=list(1:100,
> c("x","y1","y2","y3","y4","y5","y6"))))
> xyplot(y1 + y2 + y3 + y4 + y5 + y6 ~ x, data=tmp,
>           outer=TRUE, layout=c(1,6),
>           strip=FALSE, strip.left=TRUE,
>           ylab="6 levels of the y response",
>           main="put an interesting title here")
> 
> 
> Rich
> 
> On Mon, Nov 19, 2012 at 10:51 AM, Richard James
> <Richard.J.Cooper at uea.ac.uk>wrote:
> 
> > Dear colleagues,
> >
> > I wish to create a figure with 6 plots arranged vertically with no
> spacing
> > between them as they all have a common x-axis.
> >
> > However, using the code below I'm unable to get the plot area the
> same size
> > for each plot.
> >
> > The bottom plot with the x-axis label is smaller than the others, as
> is the
> > top plot which has larger margins.
> >
> > How can I get the plot region the same size for all 6 plots, whislt
> still
> > having a large enough margin for the x-axis label on the bottom plot?
> >
> > y<-rnorm(1:100)
> > x<-rnorm(1:100)
> > par(mfrow=c(6,1))
> > par(mar=c(0,5,2,5))
> > plot(y~x, xlab="", xaxt="n", ylab="y")
> > par(mar=c(0,5,0,5))
> > plot(y~x, xlab="", xaxt="n", ylab="y")
> > plot(y~x, xlab="", xaxt="n", ylab="y")
> > plot(y~x, xlab="", xaxt="n", ylab="y")
> > plot(y~x, xlab="", xaxt="n", ylab="y")
> > par(mar=c(4,5,0,5))
> > plot(y~x, xlab="x", ylab="y")
> >
> > Regards
> >
> > Richard
> >
> >
> >
> > --
> > View this message in context:
> > http://r.789695.n4.nabble.com/Plot-Area-Dimensions-tp4650051.html
> > Sent from the R help mailing list archive at Nabble.com.
> >
> > ______________________________________________
> > R-help at r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide
> > http://www.R-project.org/posting-guide.html
> > and provide commented, minimal, self-contained, reproducible code.
> >
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-
> guide.html
> and provide commented, minimal, self-contained, reproducible code.




More information about the R-help mailing list