From djsamperi at gmail.com  Thu Apr 21 01:10:20 2011
From: djsamperi at gmail.com (Dominick Samperi)
Date: Wed, 20 Apr 2011 19:10:20 -0400
Subject: [Rd] Sweave support added to rgl package
In-Reply-To: <4DAF2626.6010805@gmail.com>
References: <4DADD1E6.5040905@gmail.com>
	<BANLkTikDrC1wdzMv+-0c1_t_MjTKx+Svxg@mail.gmail.com>
	<4DAF2626.6010805@gmail.com>
Message-ID: <BANLkTimjXGU+cEGnEsW_=vZ6E50Qby4JtA@mail.gmail.com>

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



[Rd] Sweave support added to rgl package
Dominick Samperi