循环以在.Rmd中生成绘图图表(带注释)

时间:2016-09-10 00:25:01

标签: r r-markdown plotly

我正在尝试创建一个rmarkdown文件,该文件动态加载带有预定义注释的绘图对象列表。下面列出了最小的示例代码:

目前,此块在多个级别失败: 1)情节没有正确显示 - 我试图将htmltools::tagList(ls_ply)放在最后,它会抛出错误。 2)我希望将评论作为标题,但是,我知道如果我在块开头应用results='asis',它将禁用该情节。

```{r, echo=FALSE, message=FALSE}
library(plotly)

dsamp <- diamonds[sample(nrow(diamonds), 1000), ]
p1 <- qplot(carat, price, data=dsamp, colour=clarity)
art1 <- list(viz = p1, comment = 'article1')
p2 <- qplot(carat, price, data=dsamp, colour=carat)
art2 <- list(viz = p2, comment = 'article2')
ls_ply <- lapply(list(art1,art2),function(art){
  cat('## ',art$comment,'\n')
  art$viz
})
```

1 个答案:

答案 0 :(得分:0)

对于ggplot图:

```{r, echo=FALSE, message=FALSE, results='asis'}
library(ggplot2)

dsamp <- diamonds[sample(nrow(diamonds), 1000), ]
p1 <- qplot(carat, price, data=dsamp, colour=clarity)
art1 <- list(viz = p1, comment = 'article1')
p2 <- qplot(carat, price, data=dsamp, colour=carat)
art2 <- list(viz = p2, comment = 'article2')

art <- list(art1, art2)
for (i in seq_len(length(art))) {
  cat(sprintf("\n\n## %s\n", art[[i]]$comment))
  print(art[[i]]$viz)
}
```

但是,这不能扩展到plotly个对象。这是一个已知问题,只有解决方案是重新组合所有图并立即绘制它们,这不是你想要的。

使用knit_expand可能有所帮助,但knit_child对我不起作用。