2017-10-16 73 views
3

我正在使用bookdown包与RMarkdown生成类似于this的基于网络的书籍,同样可以选择下载PDF版本的书籍。RMarkdown:积攒书款

我已经列入我的“书”这本书的HTML版本很好地工作plotly图。在交互时,当在YAML头中包含pdf输出时,按钮“build book”会引发错误。

根据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内这种解决方案,从而使图形会被自动地在PDF中的HTML输出和静态(PNG)互动输出?

回答

0

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

  • 与 “knitr” 按钮(见this post的解决方法)
  • 与互联网连接(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")) 


``` 
+0

使用HTML作为输出格式不想要输出的全'plotly'对象,以便用户可以与它进行交互? –

+1

我的问题是与生成的书_pdf_版本 – Ratnanil