RMarkdown:带有 plotly 的 bookdown

RMarkdown: bookdown with plotly

我正在使用带有 RMarkdown 的 bookdown 包来生成 web-based 类似于 this 的书,同样可以选择下载 pdf-version 的书。

我在我的 "book" 中包含了 plotly 个图表,它们在本书的 html-version 中效果很好。作为交互式,按钮 "build book" 在 YAML-header.

中包含 pdf 输出时会抛出错误

基于 this description,我找到了一种使用常规 RMarkdown 文件创建具有 plotly 图形输出的 pdf 的解决方法。一个最小的解决方案(在 bookdown 之外)如下所示:

---
title: "test"
output:
  pdf_document: default
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(plotly)

Sys.setenv("plotly_username" = "username")
Sys.setenv("plotly_api_key" = "API")
```


```{r cars}
library(plotly)
p <- plot_ly(x = c(1,2,3,4), y = c(2,4,1,3), type = 'scatter', mode = 'lines')
plotly_IMAGE(p, format = "png", out_file = "output.png")

```
![Caption for the picture.](output.png)

有没有办法在 bookdown 中包含此解决方案,以便图表在 html 输出中自动 交互式 和 pdf 输出中的静态 (png) ?

基于this blogpost,我想出了一个解决方案。请注意,这仅适用于

  • 使用 "knitr" 按钮(请参阅 了解解决方法)
  • 有互联网连接 (1) 和 Plotly 帐户 (2)

(1) 请参阅 this link 以在本地导出静态图像(由于安装失败 PhantomJS,我没有开始工作)

(2) Plotly 的用户配额目前为每个用户每天 100 个绘图/网格

---
title: "test"
output:
  html_document: default
  pdf_document: default
  word_document: default
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(plotly)
library(pander)
Sys.setenv("plotly_username" = "YOUR PLOTLY USERNAME")
Sys.setenv("plotly_api_key" = "API KEY")

output <- knitr::opts_knit$get("rmarkdown.pandoc.to") # html / latex / docx

```


```{r, results="asis"}

print(output)

p <- plot_ly(x = c(1,2,3,4), y = c(2,4,1,3), type = 'scatter', mode = 'lines')

filename <- "output.png"

if(output %in% c("latex","docx")){
  plotly_IMAGE(p, format = "png", out_file = filename)
  pandoc.image(filename)
} else if(output == "html"){
  p
} else(print("No format defined for this output filetype"))


```