我在我的分析中使用Markdown文档。我创建了很多图表,并使用
实现这一目标的一种方法是使用
别的地方:
knitr::opts_chunk$set(dev= c("png", "svg", "pdf")
和rmarkdown::render(... , clean = FALSE)
来获得png(用于Google幻灯片),svg(用于PowerPoint)和pdf(用于手动LaTeX报告)。然而,现在我想将不同分析的图表组合成图形面板,同时能够在不重新运行所有分析的情况下更改图表的大小和纵横比。实现这一目标的一种方法是使用
.rds
文件保存ggplots,使用saveRDS(ggplot2::last_plot(), "figure_1.rds")
在分析笔记本中保存,然后在生成图形面板的单独脚本中使用library(patchwork); readRDS("figure_1.rds") / readRDS("figure_2.rds")
来读取。这可以部分自动化,使用一个钩子来实现:
example_analysis.Rmd
```{r setup}
knitr::opts_chunk$set(dev= c("png", "svg", "pdf")
knitr::knit_hooks$set(hook_save_plot_as_rds = function(before, options, envir, name) {
if(before) return() # run only after chunk
if(length(knitr:::get_plot_files())==0) return() # only run if
saveRDS(ggplot2::last_plot(), knitr::fig_chunk(knitr::opts_chunk$get("label"), ext = "rds"))
})
```
Here we do some heavy analysis
```{r sepal-plot}
ggplot(iris, aes(Sepal.Width, Sepal.Length)) + geom_point()
```
Here we do some more heavy analysis
```{r petal-plot}
ggplot(iris, aes(Petal.Width, Petal.Length)) + geom_point()
```
别的地方:
library(patchwork)
get_figure <- function(name) readRDS(paste0("example_analysis_files/figure-html/", name, "-1.rds"))
get_figure("petal-plot") / get_figure("sepal-plot") + plot_annotation(tag_levels="A")
device="rds"
吗?
plotnum
,并且(2)通过观察块标签来为每个块重置它。这样做的好处是全局环境保持清洁(通过1),而且文件名更加稳定(2)。如果我用我的回答替换你的回答,删除我的回答并接受你的回答,你觉得可以吗? - undefined