[R] Sweave: infelicities with lattice graphics

Deepayan Sarkar deepayan.sarkar at gmail.com
Fri Jul 16 07:14:51 CEST 2010


On Thu, Jul 15, 2010 at 1:51 PM, Michael Friendly <friendly at yorku.ca> wrote:
> In a paper I'm writing using Sweave, I make use of lattice graphics, but
> don't want to explicitly show (or explain)
> in the article text the print() wrapper I need in code chunks for the graphs
> to appear. I can solve this by including each chunk twice, with different
> options, as in
>
> <<ortho-xyplot1-code, keep.source=TRUE, eval=FALSE>>=
> library(nlme)
> library(lattice)
> xyplot(distance ~ age|Sex, data=Orthodont, type='b', groups=Subject,
> pch=15:25,
>   col=palette(), cex=1.3, main="Orthodont data")
> @
> <<ortho-xyplot1,fig=TRUE, include=FALSE, echo=FALSE, width=6, height=6>>=
> library(nlme)
> library(lattice)
> print(xyplot(distance ~ age|Sex, data=Orthodont, type='b', groups=Subject,
> pch=15:25,
>   col=palette(), cex=1.3, main="Orthodont data"))
> @
>
> but then, if I decide to change the plotting code, I have to make changes in
> two places.  Is there some
> feature of Sweave or lattice I've missed that would simplify this? Re-use of
> code chunks doesn't seem
> to apply here.

I usually use this variant of Duncan's suggestion:

<<ortho-xyplot1-code, keep.source=TRUE, eval=FALSE>>=
library(nlme)
library(lattice)
xyplot(distance ~ age|Sex, data=Orthodont, type='b', groups=Subject, pch=15:25,
  col=palette(), cex=1.3, main="Orthodont data")
@

<<ortho-xyplot1,fig=TRUE, include=FALSE, echo=FALSE, width=6, height=6>>=
plot(trellis.last.object())
@

-Deepayan



More information about the R-help mailing list