在Rmarkdown html报告中嵌入一个图表数据列表

时间:2017-06-25 21:14:33

标签: r knitr r-markdown plotly heatmap

我错过了这是非常简单的事情,所以希望这应该是一个简单的解决方法。

我在一个plotly代码块中生成Rmarkdown个热图列表,然后想要在下一步中将它们嵌入到报告中。

我正在尝试:

---
title: "test"
output: html_document
---

```{r setup, include=FALSE,echo=FALSE}
knitr::opts_chunk$set(echo=FALSE,out.width='1000px',dpi=200,fig.keep="all")
options(width = 1000)
options(knitr.table.format = "html")

suppressPackageStartupMessages(library(dplyr))
suppressPackageStartupMessages(library(plotly))
suppressPackageStartupMessages(library(knitr))
```


```{r heatmaps, include=FALSE,echo=FALSE}
set.seed(1)
heatmaps.list <- vector(mode="list",3)
for (i in 1:3) heatmaps.list[[i]] <- plot_ly(z = matrix(rnorm(10000),100,100), type = "heatmap")
```

```{r plots, include=FALSE,echo=FALSE}
for (i in 1:3){
  heatmaps.list[[i]]
  cat("\n")
}
```

不幸的是,这不是嵌入热图,尽管它们是在heatmaps Rmarkdown代码块中生成的。

如果我尝试使用base情节似乎有效:

```{r heatmaps, include=FALSE,echo=FALSE}
set.seed(1)
hist.list <- vector(mode="list",3)
for (i in 1:3){
  hist.list[[i]] <- hist(rnorm(10000),plot=F)
}
```

```{r plot, warning=FALSE,message=FALSE,echo=FALSE}
for (i in 1:3){
  plot(hist.list[[i]])
  cat("\n")  
}
```

1 个答案:

答案 0 :(得分:1)

即使设置更简单,我也会得到同样的错误

---
output: html_document
---

```{r setup}
suppressPackageStartupMessages(library(plotly))

# this works
plot_ly(z = matrix(rnorm(100), 10, 10), type = "heatmap")

# this does not
set.seed(1)
for (i in 1:3)
  plot_ly(z = matrix(rnorm(100), 10, 10), type = "heatmap")
```

你想要保存绘图ab objets的事实不是问题,它是循环。 here的答案是使用

htmltools::tagList(as_widget(plot1), as_widget(plot2))

代替。对于我的最小例子,这将是。

---
output: html_document
---

```{r setup}
suppressPackageStartupMessages(library(plotly))

# now it works
set.seed(1)
l <- htmltools::tagList()
for (i in 1:3) 
  l[[i]] = as_widget(plot_ly(z = matrix(rnorm(100), 10, 10), type = "heatmap") )
l
```

不幸的是,我没有代表重复的代表。