我正在写一个情节的解释,我基本上将在第一个块中创建该图,然后描述该输出,并在第二个块中添加一个轴。

然而,似乎每个块都会强制一个新的绘图环境,所以当我们尝试单独使用 axis 运行一个块时会出错。观察:

---
output: html_document
---

```{r first}
plot(1:10, 1:10, xaxt = "n")
```

Look, no x axis!

```{r second}
axis(side = 1, at = 1:10)
```



显然,这是具有相同输出的有效解决方法:
---
output: html_document
---

```{r first}
plot(1:10, 1:10, xaxt = "n")
```

Look, no x axis!

```{r second, eval = FALSE}
axis(side = 1, at = 1:10)
```
 ```{r second_invisible, echo = FALSE}
plot(1:10, 1:10, xaxt = "n")
axis(side = 1, at = 1:10)
```

但这不太理想(重复的代码,必须对情节进行两次评估等)

This 问题是相关的——例如,我们可以排除 second 块并在 echo = -1 块上设置 second_invisible(这也不适用于我的应用程序,但我不想在这里使事情过于复杂)

有没有像 dev.hold 这样的选项可以发送到第一个块?

最佳答案

您可能会考虑使用 recordPlot

---
output: html_document
---

```{r first}
plot(1:10, 1:10, xaxt = "n")
x<-recordPlot()
```

Look, no x axis!

```{r second}
replayPlot(x)
axis(side = 1, at = 1:10)

```

来源:

R: Saving a plot in an object

R plot without showing the graphic window

https://stat.ethz.ch/R-manual/R-devel/library/grDevices/html/recordplot.html

关于r - 在多个块上拆分绘图调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37189068/

10-10 09:28