4

我一直在尝试在 r markdown 中为包含 ggplot2 图的考试包创建一个考试问题。

这是一个代表:

```{r}
library(ggplot2)
library(tibble)
x <- data_frame(x = rnorm(100, 50, 25), y = x + rnorm(100, 0, 15))
```

Question
========
```{r}
ggplot(x) + geom_point(aes(x = x, y = y))
```

What is true about the plot?

Answerlist
----------
* The relationship is strong
* The relationship is weak

Solution
========
The relationship is strong.

Answerlist
----------
* True
* False

Meta-information
================
exname: scatterplot
extype: schoice
exsolution: 10
exshuffle: 2

如果我编织文档,html 页面会按应有的方式预览绘图。

在此处输入图像描述

但是,如果我使用exams2html() 函数,则不会显示ggplot。

在此处输入图像描述

我尝试了不同的方法来打印绘图(例如将绘图存储在变量中,然后打印或使用内联代码等),但没有任何效果。我在 r-exams.org 网站或其他任何地方都找不到任何解决方案。所以,我的问题是:我是否遗漏了什么,或者考试包中还没有 ggplot2 支持?

4

1 回答 1

4

这与ggplot2. 这是关于一些默认值knitr加上我这边的疏忽。

tl;dr:exams现在在R-Forge ( https://R-Forge.R-project.org/R/?group_id=1337 )的开发版本中避免了这个问题。安装此版本后,示例应该可以正常工作:install.packages("exams", repos="http://R-Forge.R-project.org")

详细信息:代码块

```{r}
ggplot(x) + geom_point(aes(x = x, y = y))
```

被正确处理成图形文件(正如您在问题中已经显示的那样)。但是,生成的图形文件存储在子目录中,函数figure/不会搜索exams2xyz()潜在的补充。并且由于实际的 HTML 文件与所有临时 .Rmd 和 .md 文件设置在不同的目录中,因此找不到该图。

简单的解决方案是对所有补充使用当前目录而不是子目录。此外,我会关闭标题:

```{r, fig.path = "", fig.cap = ""}
ggplot(x) + geom_point(aes(x = x, y = y))
```

通过此修改exams2html()exams2pdf()两者都可以正常工作。请注意,编织文件(.md和图形)是在一个临时文件夹中生成的,而 HTML 是在另一个临时文件夹中生成的,因此这些都不会弄乱您的工作空间。

如果您想在 PDF 输出中强制包含不浮动且不带标题的图形,则需要\在代码块之前包含一行。请参阅R/exams 模板库中的http://www.R-exams.org/templates/scatterplot/以获取工作示例(使用基本图形,但其他方面非常相似)。

我的疏忽:我在考试包中为文件设置了fig.path=""via ,但忘记为文件做同样的事情。这已在开发版本中得到纠正。因此,您可以求助于它,也可以明确地包含在您的练习中,这也适用于 CRAN 发布版本。knitr::opts_chunk$set().Rnw.Rmdfig.path=""

于 2017-10-29T22:05:19.307 回答