Plotly as png in knitr/rmarkdown
3d, knitr, plotly, r, r-markdown
Solution
I have created a little workaround, which saves the plotly images locally as png-file and imports it back to the RMD file. You need the package `webshot`, which you can load via:
install.packages("webshot")
Further more, you need to install phantomjs via
webshot::install_phantomjs()
Then (when phantomjs is in your PATH), you can create your RMD file:
---
title: "Untitled"
output: pdf_document
---
{r} library(plotly) p <- plot_ly(economics, x = ~date, y = ~unemploy / pop)
tmpFile <- tempfile(fileext = ".png") export(p, file = tmpFile)

`
This works for me .. perhaps it's a workaround for you, too!
Problem
The following Rmarkdown renders the plotly 3D graph in HTML, but not in PDF. ```` Testing plotly ```{r} library(plotly) p <- plot_ly(data=iris, x=~Sepal.Length, y=~Sepal.Width, z=~Petal.Length, color=~Species, symbols=c(0,1), type="scatter3d", mode="markers") p ``` ```` A snapshot of the graph appears as follows: According to the plotly help page: If you are using rmarkdown with HTML output, printing a plotly object in a code chunk will result in an interactive HTML graph. When using rmarkdown with non-HTML output, printing a plotly object will result in a png screenshot of the graph. Is there a way to render the plotly graph in a PDF? Note: The error from `rmarkdown::render()` is: ``` Error: Functions that produce HTML output found in document targeting latex output. Please change the output type of this document to HTML. Alternatively, you can allow HTML output in non-HTML formats by adding this option to the YAML front-matter of your rmarkdown file: always_allow_html: yes Note however that the HTML output will not be visible in non-HTML formats. ```