我刚刚发现了一篇很棒的博客文章。
阅读更多at Michael J Williams' blog - 我无耻地窃取了代码,所以那里有更多细节。 记得将块选项设置为 results = "asis"。
假设您想使用循环输出一堆图,但您希望它们每个都有不同的大小。定义如下函数(再说一遍,我这里只是复制粘贴):
subchunkify <- function(g, fig_height=7, fig_width=5) {
g_deparsed <- paste0(deparse(
function() {g}
), collapse = '')
sub_chunk <- paste0("
`","``{r sub_chunk_", floor(runif(1) * 10000), ", fig.height=",
fig_height, ", fig.width=", fig_width, ", echo=FALSE}",
"\n(",
g_deparsed
, ")()",
"\n`","``
")
cat(knitr::knit(text = knitr::knit_expand(text = sub_chunk), quiet = TRUE))
}
并使用这样的函数,定义自己的图形大小:
```{r echo=FALSE, results='asis'}
g <- ggplot(economics, aes(date, unemploy)) +
geom_line()
subchunkify(g, 10, 3)
subchunkify(g, 7, 7)
```
或者让数据定义尺寸:
```{r echo=FALSE, results='asis'}
g <- ggplot(economics, aes(date, unemploy)) +
geom_line()
for (i in seq(2, 5)) {
subchunkify(g, i / 2, i)
}
```
迈克尔在帖子中警告你必须小心:
由于我们使用 results='asis',如果我们想从块中输出文本或标题或其他任何内容,我们必须使用原始 HTML,而不是 Markdown,我们必须使用 cat() 来执行此操作,而不是打印()。例如:
g <- ggplot(economics, aes(date, unemploy)) +
geom_line()
cat('<h2>A Small Square Plot</h2>')
subchunkify(g, 3, 3)
再说一遍,这不是我的工作……请前往lovely blog post 了解更多详情。希望这对你有用。