gpt4 book ai didi

R Markdown : plots within a loop going out of margin when typesetting to PDF

转载 作者:行者123 更新时间:2023-12-01 13:44:22 24 4
gpt4 key购买 nike

将 R Markdown 文档排版为 PDF 时,如果一个函数绘制多个绘图,这些绘图通常并排显示,只有第一个绘​​图完全位于页面边缘。

最小 R Markdown 示例:

---
title: "Example re plotting problem"
author: "Daniel E. Weeks"
date: "May 3, 2016"
output: pdf_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

## Multiple plots within a loop


```{r}
plots <- function() {
plot(rnorm(100))
hist(rnorm(100))
}

for (i in 1:3) {
plots()
}
```

这是生成的PDF第2页的截图



这表明了问题。我在网上搜索过,但还没有找到解决这个问题的方法。

谢谢你。

user2554330 提出的情节钩子(Hook)解决方案简单,效果很好。因此,此代码在生成的 PDF 的边距内绘制所有图:
---
title: "Example re plotting problem"
author: "Daniel E. Weeks"
date: "May 3, 2016"
output: pdf_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

## Multiple plots within a loop


```{r}
plots <- function() {
plot(rnorm(100))
hist(rnorm(100))
}
```

## Call plotting function

```{r}
my_plot_hook <- function(x, options)
paste("\n", knitr::hook_plot_tex(x, options), "\n")
knitr::knit_hooks$set(plot = my_plot_hook)
for (i in 1:3) {
plots()
}
```

最佳答案

问题是生成的 .tex 文件在\includegraphics{} 调用之间没有空格。 LaTeX 会发出有关 hbox 过满的警告,因为图形不够大,不能单独放在一行上,而且当它在每行上放两个时,它又太大了。

您可以告诉 LaTeX(TeX 真的)输出坏行,而无需在每行添加两个数字

\pretolerance=10000

在代码块之前的文本中。您可能希望将其设置回默认值
\pretolerance=100

在代码块之后,或者 LaTeX 之后不会尝试连字符,并且文本看起来真的很难看。

解决此问题的另一种方法是强制每个图形在其自己的段落中。您可以通过添加此代码来做到这一点
my_plot_hook <- function(x, options)
paste("\n", knitr::hook_plot_tex(x, options), "\n")
knitr::knit_hooks$set(plot = my_plot_hook)

在您进行绘图之前进入代码块。这会放一个空行
在每个数字之前和之后。

关于R Markdown : plots within a loop going out of margin when typesetting to PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37030219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com