簡體   English   中英

在多個塊上拆分繪圖調用

[英]Splitting a plot call over multiple chunks

我正在寫一個情節的解釋,我將基本上在第一個塊中創建繪圖,然后描述該輸出,並在第二個塊中添加一個軸。

但是,似乎每個塊都會強制建立一個新的繪圖環境,因此我們在嘗試僅使用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)
```

axis(side = 1, at = 1:10)錯誤axis(side = 1, at = 1:10)plot.new尚未調用調用: <Anonymous> ... withCallingHandlers - > withVisible - > eval - > eval - > axis執行停止

顯然,這是一個有效的解決方法,具有相同的輸出:

---
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)
```

但這不太理想(重復的代碼,必須兩次評估情節等)

這個問題是相關的 - 例如,我們可以排除second塊並在second_invisible塊上設置echo = -1 (這在我的應用程序中也不起作用,但我不想在這里過於復雜)

有沒有像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:在對象中保存繪圖

R圖沒有顯示圖形窗口

https://stat.ethz.ch/R-manual/R-devel/library/grDevices/html/recordplot.html < - 請注意關於ggplot2的免責聲明

您可以設置選項global.device來打開持久性圖形設備:

---
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_knit$set(global.device = TRUE)
```

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

Look, no x axis!

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM