[R] snapshot3d hangs during rmarkdown::render

David Waterman dgw@term@n @end|ng |rom gm@||@com
Thu Jun 10 17:33:16 CEST 2021


Hi Duncan,

Ah, thanks! I should have thought of that as I already tried
webshot=TRUE/FALSE in an interactive R session, but did not think to
put that in my R Markdown. I can confirm that this workaround is
successful. I can then also confirm that installing chromote
0.0.0.9002 means that I can then use webshot=TRUE.

Thanks for your help.

-- David

On Thu, 10 Jun 2021 at 14:24, Duncan Murdoch <murdoch.duncan using gmail.com> wrote:
>
> On 10/06/2021 4:42 a.m., David Waterman wrote:
> > Hi all,
> >
> > I tried subscribing to the list yesterday, but this does not appear to
> > have been successful. Therefore I am hoping this message meets
> > volunteer moderator approval.
> >
> > I have problems using snapshot3d from rgl while trying to render an R
> > Markdown page. I want to do this to capture static snapshots of an
> > interactive widget on the page. I had this working with an earlier
> > version of R (sorry, forgot which), but this now hangs indefinitely at
> > the snapshot3d call.
> >
> > Should I expect this to work? I can successfully create a snapshot
> > from an interactive R session with either webshot=TRUE or FALSE, just
> > not from within my R Markdown build.
> >
> > I have created a simple reproducer, which I attempt to build using:
> >
> > library(rmarkdown)
> > rmarkdown::render("reproducer.Rmd")
> >
> > where the contents of reproducer.Rmd are:
> >
> > $ cat reproducer.Rmd
> > ---
> > title: "rgl test"
> > output:
> >    html_document:
> >      toc: true
> >      toc_float:
> >        toc_collapsed: true
> > ---
> >
> > ```{r, setup, echo=FALSE}
> > library(rgl)
> > library(knitr)
> > knitr::knit_hooks$set(webgl = hook_webgl)
> > ```
> >
> > ### Insert rgl figure
> >
> > Test
> >
> > ```{r, webgl=TRUE, echo=FALSE}
> > with(iris, plot3d(Sepal.Length, Sepal.Width, Petal.Length,
> >                    type="s", col=as.numeric(Species)))
> > snapshot3d("foo.png")
> > rglwidget()
> > rgl.close()
> > ```
>
> One suggestion I forgot:  try snapshot3d("foo.png", webshot = FALSE).
> This should fall back to the internal snapshot code in rgl.  You
> generally don't get as good quality of a result, but if you are not
> running on a headless system it will generally work.
>
> Duncan Murdoch



More information about the R-help mailing list