我正在使用for循环使用knitr和rmarkdown在一个块中跨多个页面创建多个大图形。它对于word和html输出效果很好,但是在pdf输出中存在一个问题。

这是重现我的问题的最小RMarkdown示例。

---
title: "Knitr test"
date: "6 April 2015"
output: pdf_document
---


```{r, echo=FALSE, fig.width=6.5,fig.height=10}
library(ggplot2)
for (i in seq(1, 4)){
    p <- ggplot(cars, aes(speed, dist)) + geom_point()
    print(p)
}
```


生成的pdf文件如下所示。页面上打印了两个数字。



如果更改fig.height,请在rmd文件中添加几部分,两个数字仍以不同的排列方式打印在同一页上。

---
title: "Knitr test"
output: pdf_document
date: "6 April 2015"
---

## Section A

Row B

```{r plot_phenotype, echo = FALSE, fig.height=8, fig.width=6.5}
library(ggplot2)
for (i in seq(1, 4))
{
    p <- ggplot(cars, aes(speed, dist)) + geom_point()
    print(p)
}

```




感谢您提出任何解决此问题的建议。

我正在使用RStudio 0.99.375。这是我的会话信息。

sessionInfo()
R version 3.1.3 (2015-03-09)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=English_Australia.1252  LC_CTYPE=English_Australia.1252
[3] LC_MONETARY=English_Australia.1252 LC_NUMERIC=C
[5] LC_TIME=English_Australia.1252

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] rmarkdown_0.5.3.1 knitr_1.9.5

loaded via a namespace (and not attached):
 [1] colorspace_1.2-5 digest_0.6.8     evaluate_0.5.5   formatR_1.0
 [5] ggplot2_1.0.0    grid_3.1.3       gtable_0.1.2     htmltools_0.2.6
 [9] MASS_7.3-34      munsell_0.4.2    plyr_1.8.1       proto_0.3-10
[13] Rcpp_0.11.5      reshape2_1.4.1   scales_0.2.4     stringr_0.6.2
[17] tcltk_3.1.3      tools_3.1.3      yaml_2.1.13

最佳答案

我已经解决了我的问题。

在生成的tex文件中,每个图形之后没有新行。我们使用上面的rmd文件生成了这个tex代码:

\includegraphics{test_files/figure-latex/plot_phenotype-1.pdf}
\includegraphics{test_files/figure-latex/plot_phenotype-2.pdf}
\includegraphics{test_files/figure-latex/plot_phenotype-3.pdf}
\includegraphics{test_files/figure-latex/plot_phenotype-4.pdf}


解决方案是在每个周期之后添加新行以打印图形。

cat('\r\n\r\n')


不知道为什么我在这里需要两个“ \ r \ n”。生成的tex文件如下所示:

\includegraphics{test_files/figure-latex/plot_phenotype-1.pdf}

\includegraphics{test_files/figure-latex/plot_phenotype-2.pdf}

\includegraphics{test_files/figure-latex/plot_phenotype-3.pdf}

\includegraphics{test_files/figure-latex/plot_phenotype-4.pdf}


这是我的Rmd文件的完整示例

---
title: "Knitr test"
output:
  pdf_document:
    keep_tex: yes
date: "6 April 2015"
---

## Section A

Row B

```{r plot_phenotype, echo = FALSE, fig.height=8, fig.width=6.5}
library(ggplot2)
library(grid)
for (i in seq(1, 4))
{
    grid.newpage()
    p <- ggplot(cars, aes(speed, dist)) + geom_point()

    print(p)
    cat('\r\n\r\n')
}


```

07-24 09:52
查看更多