From murdoch.duncan at gmail.com  Wed Apr 20 20:29:58 2011
From: murdoch.duncan at gmail.com (Duncan Murdoch)
Date: Wed, 20 Apr 2011 14:29:58 -0400
Subject: [Rd] Sweave support added to rgl package
In-Reply-To: <BANLkTikDrC1wdzMv+-0c1_t_MjTKx+Svxg@mail.gmail.com>
References: <4DADD1E6.5040905@gmail.com>
	<BANLkTikDrC1wdzMv+-0c1_t_MjTKx+Svxg@mail.gmail.com>
Message-ID: <4DAF2626.6010805@gmail.com>

On 20/04/2011 1:52 PM, Dominick Samperi wrote:
> On Tue, Apr 19, 2011 at 2:18 PM, Duncan Murdoch
> <murdoch.duncan at gmail.com>  wrote:
> >  I have just committed some code to the rgl package on
> >  https://r-forge.r-project.org/projects/rgl/ to allow rgl images to be
> >  inserted into Sweave documents.  (This is not in the CRAN version yet.)  It
> >  makes use of the custom graphics driver support added by Brian Ripley.
> >
> >  In R-devel (which will become R 2.14.0 next spring in New Zealand, next fall
> >  in most other places), usage is quite straightforward.  For
> >  example, code like this in a Sweave document:
> >
> >  <<fig=true, grdevice=rgl.Sweave, pdf=false, stayopen=TRUE>>=
> >  x<- rnorm(100); y<- rnorm(100); z<- rnorm(100)
> >  plot3d(x, y, z)
> >  @
> >
> >  will insert a .png snapshot of the figure.  Because that chunk has
> >  "stayopen=TRUE", it can be followed by another chunk to add
> >  to the figure, e.g.
> >
> >  <<fig=true, grdevice=rgl.Sweave, pdf=false>>=
> >  lines3d(x[1:10], y[1:10], z[1:10], col="red")
> >  @
> >
> >  All of this is possible in R 2.13.0, but it takes more work:  see the
> >  ?rgl.Sweave help page.
> >
> >  I will eventually add postscript and PDF output options as well, and perhaps
> >  some support for the LaTeX movie15 package, but those are not there yet.
> >    Comments or bug reports are welcome.
> >
> >  Duncan Murdoch
>
> I inserted your example into testrgl.Rnw under R 2.13.0, with Sweave.snapshot()
> at the end of both chunks, but things did not work as expected.
>
> I used:
> $ R CMD Sweave testrgl.Rnw
> $ pdflatex tesetrgl
> (view testrgl.pdf)
>
> When R CMD Sweave is run the graphics is displayed interactively.

That's unavoidable as far as I know.  I don't think there's a general 
purpose way to tell OpenGL to render in the background, so it works by 
rendering on screen, then copying a bitmap to the .png file.
> There is no graphics in the PDF file, even though both .png files
> are read when pdflatex is run.

Do they look okay?  One possible problem is that you may have asked for 
a bitmap too big for your hardware to render, in which case those png 
files will end up with junk (probably blank).  Setting resolution=100 in 
the chunk headers will do it more coarsely.  (The default is 300 dpi.)  
The same effect comes from width=1, height=1  (or some other small numbers).

Duncan Murdoch



[Rd] Sweave support added to rgl package
Duncan Murdoch