[Rd] Sweave support added to rgl package

Dominick Samperi djsamperi at gmail.com
Thu Apr 21 01:10:20 CEST 2011


On Wed, Apr 20, 2011 at 2:29 PM, Duncan Murdoch
<murdoch.duncan at gmail.com> wrote:
> 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
>

The resolution=100 tip fixed the problem, thanks. Now I see the snapshots
in the PDF file. Using this in a package will certainly change the
user experience,
but it moves away from the traditional batch-oriented R package
processing, it seems to me.

The idea of adding support for movies and 3D graphics to Sweave/PDF files
sounds very interesting and revolutionary.

Dominick



More information about the R-devel mailing list