RMarkdown:使用 plotly 进行预订

Rat*_*nil 6 r knitr r-markdown plotly bookdown

我使用的是bookdown包RMarkdown产生类似的基于Web的书,同样与选项来下载图书的PDF版本。

plotly在我的“书”中包含了图表,这些图表在本书的 html 版本中运行良好。作为交互式,在 YAML 标头中包含 pdf 输出时,“构建书”按钮会引发错误。

基于此描述,我找到了一种使用常规 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)
Run Code Online (Sandbox Code Playgroud)

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

Rat*_*nil 1

基于这篇博文,我想出了一个解决方案。注意,这仅适用于

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

(1) 请参阅此链接以在本地导出静态图像(由于安装失败,所以我没有开始工作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"))


```
Run Code Online (Sandbox Code Playgroud)