【问题标题】:Using layout with knitr在 knitr 中使用布局
【发布时间】:2012-06-26 04:33:01
【问题描述】:

我想用knitr 在降价文件中用两个图在 R 中制作一个图形。通常,使用layout(t(1:2))par(mfrow=c(1,2)) 很容易做到这一点。我可以用knitr 做到这一点,还是它总是会产生两个单独的数字?

这是一个最小的工作示例,它在您的工作目录中创建一个名为 ./junk.Rmd./junk.md 的文件以及两个文件 ./figure/junkislands1.png(仅包括第一个图)和 ./figure/junkislands2.png(包括两个图我想要)。

require(knitr)
temp <- "```{r junkislands, fig.width=8, fig.height=5}
layout(t(1:2))
pie(islands)
barplot(islands)
```"
cat(temp, file="junk.Rmd")
knit("junk.Rmd", "junk.md")

问题不在于它创建了两个 .png 文件,而在于 markdown 文件 junk.md 包含这两个文件。

当我将该标记转换为 html 时,它包含两个 .png 文件,而我只想要一个同时绘制两个数字的文件。

这是从 knitr 生成的文件junk.md

```r
par(mfrow = c(1, 2))
pie(islands)
```

![plot of chunk junkislands](figure/junkislands1.png) 

```r
barplot(islands)
```

![plot of chunk junkislands](figure/junkislands2.png) 

【问题讨论】:

标签: r markdown knitr


【解决方案1】:

查看http://yihui.name/knitr/options,特别是fig.keep。我想你想要fig.keep = 'last'

require(knitr)
temp <- "```{r junkislands, fig.width=8, fig.height=5, fig.keep = 'last'}
layout(t(1:2))
pie(islands)
barplot(islands)
```"
cat(temp, file="junk.Rmd")
knit("junk.Rmd", "junk.md")

给予

```r
layout(t(1:2))
pie(islands)
barplot(islands)
```

![plot of chunk junkislands](figure/junkislands.png) 

【讨论】:

  • 只是附注——您可以直接调用knit(text = temp),而不是将文本写入junk.Rmd
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-06
  • 1970-01-01
  • 2021-09-15
  • 2019-01-27
  • 2016-10-09
相关资源
最近更新 更多