exams 包中是否支持 ggplot2?

Is there support for ggplot2 in the exams package?

我一直在尝试在 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 支持?

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

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

详情:代码块

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

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

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

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

通过此修改 exams2html()exams2pdf() 都可以正常工作。请注意,编织文件(.md 和图形)是在一个临时文件夹中生成的,而 HTML 是在另一个临时文件夹中生成的,因此 none 这会使您的工作变得混乱 space .

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

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